从代码到发包,一个程序全搞定!Gitea 推出软件包自托管功能 Package Registry
2022 年 7 月的最后一天,随着 Gitea 1.17.0 版本的正式发布,Gitea 开源社区推出了一项名为 Package Registry 的包管理功能,与 Gitea 代码仓库无缝集成,类似 GitHub Packages 可以方便地伴随源码发布打包后的软件。
这项功能整合在 Gitea 当中,你可以在自己的组织内部只使用一个 Gitea 程序就轻松实现源码托管和软件包仓库两项能力,丢掉繁杂的配置,丢掉 Nexus 和其他需要额外操心的软件仓库 ~
和代码仓库一样,你可以使用搜索,浏览和管理工具来查找和发布软件包。
Gitea 支持常见的包管理工具:
- Java (Maven)
- Node.js (npm)
- Python (PyPI)
- PHP (Composer)
- C++ (Conan)
- .NET (NuGet)
- Dart (Pub)
- Ruby (RubyGems)
- Kubernetes (Helm)
- Docker 镜像
- 通用压缩包
未来,还会有更多类型的包管理功能加入其中,比如 Debian 和 RPM 软件包。
关注微信公众号 Gitea,回复“包管理”获得更详细的使用手册。
上手体验
如果你还没有用过 Gitea,推荐给你这篇文章
NPM
npm 包管理器用于将你的 Node.js 项目发布到自托管的 Gitea Packages Repository。
分分钟教你发布自己的 npm 包
1.创建你的 npm 包。新建一个文件夹,我们就叫它 hellojs,然后使用 npm init 进行初始化。
mkdir hellojs && cd hellojs
npm init
2.发包之前,添加私有 npm 仓库地址
用户名以
zhangsan
为例,请将try.gitea.io
替换成你自己的服务器地址和账号
npm config set registry https://try.gitea.io/api/packages/zhangsan/npm/
3.添加访问令牌,此时你还需要使用 npm login
进行登录
npm config set -- '//try.gitea.io/api/packages/zhangsan/npm/:_authToken' "personal_access_token"
4.最后我们将编写的代码通过使用 npm publish
打包上传到 Gitea 的 npm 仓库。
完成这样几步,我们就可以发布一个自己的 Node.js 软件包!此外,Gitea 会识别出软件包类型,在包的详情页面也附带了 Node.js 包的导入和安装教程。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tby7AugF-1661467608631)(https://gehrin-1306143210.cos.ap-chongqing.myqcloud.com/gitea/1661325416929-59461811-ac6a-423d-a83b-5f2952f41c6e.gitea)]
Maven
当我们自己写了一个牛逼的 Java 开源库时,非常希望别人也能使用。如果将 Java 软件包上传到公共的中央仓库进行分享,申请流程费时费力。此时就可以通过发布到私有的 Gitea Maven Repository 让别人从你的服务器下载,既能自主控制资源分享也能彰显极客身份。
简单几步教你发布自己的 Maven 依赖包
1.将 Access Token
填入 Maven 的配置文件 settings.xml
。这样我们就可以管理自己的 Maven 仓库。
将
{access_token}
替换为你的 Access Token
<settings>
<servers>
<server>
<id>gitea</id>
<configuration>
<httpHeaders>
<property>
<name>Authorization</name>
<value>token {access_token}</value>
</property>
</httpHeaders>
</configuration>
</server>
</servers>
</settings>
2.在 Maven 项目目录编辑 pom.xml,添加远端仓库地址:
将
{owner}
替换为你的用户名,例如zhangsan
<repositories>
<repository>
<id>gitea</id>
<url>https://try.gitea.io/api/packages/{owner}/maven</url>
</repository>
</repositories>
<distributionManagement>
<repository>
<id>gitea</id>
<url>https://try.gitea.io/api/packages/{owner}/maven</url>
</repository>
<snapshotRepository>
<id>gitea</id>
<url>https://try.gitea.io/api/packages/{owner}/maven</url>
</snapshotRepository>
</distributionManagement>
3.发布软件包!
mvn deploy
至此,你就可以将 Gitea 上的 Maven 包分享给别人使用。Gitea 在软件包的详情页面上也非常贴心地附带了 Maven 包的导入教程~
推送 Docker 镜像
Gitea 支持通用的 OCI 容器镜像格式。假设你已经在本地构建好了 Docker 镜像,然后将其托管到自己的 Gitea 服务器上,实现一个自己的私有化 “Docker Hub”,那么你只需要完成登录、推送两个步骤:
以服务器
try.gitea.io
为例,用户名zhangsan
,密码是你的 Access Token
我们从官方仓库拉取一个 nginx 镜像作为基底,把这个镜像存储到我们自己的容器镜像仓库中。
# 登录你的镜像仓库,也就是你的 Gitea 服务器地址
docker login try.gitea.io
# 从官方仓库拉取一个 nginx:latest 镜像,并改名
docker pull nginx:latest
docker tag nginx:latest try.gitea.io/zhangsan/nginx:latest
# 推送镜像到 Gitea 服务器
docker push try.gitea.io/zhangsan/nginx:latest
此后,不管你在何处,公网还是内网,使用私有镜像时,都可以从你的 Gitea 服务器拉取。
docker run --name nginx -p 80:80 -d \
try.gitea.io/zhangsan/nginx:latest
更多功能等待你尝试!
Maven、npm、PyPI、Composer、Conan、NuGet、Pub、RubyGems、Helm、Docker,任意一个你熟悉的包管理工具,Gitea 都支持。还在等什么,赶快来尝鲜!
从代码到发包,一个程序全搞定!Gitea 推出软件包自托管功能 Package Registry的更多相关文章
- 转:C4项目中验证用户登录一个特性就搞定
转:C4项目中验证用户登录一个特性就搞定 在开发过程中,需要用户登陆才能访问指定的页面这种功能,微软已经提供了这个特性. // 摘要: // 表示一个特性,该特性用于限制调用 ...
- 一个PHP文件搞定微信H5支付
/ 更新于 2018-07-02 / 8 条评论 过年期间也坚持要撸码啊接着给博客除草,在这个小除夕是情人节的一天,祝大家新年快乐,情人节能够顺利脱单~~~ 回归正题,这篇文章介绍一下微信H5支付, ...
- [转帖]面试问Kafka,这一篇全搞定
面试问Kafka,这一篇全搞定 https://os.51cto.com/art/201911/606207.htm 图片来自 Pexels Kafka 基础 消息系统的作用 大部分小伙伴应该都清楚, ...
- 企业sudo权限规划详解 (实测一个堆命令搞定)
简述问题: 随着公司的服务器越来越多,人员流动性也开始与日俱增,以往管理服务器的陈旧思想应当摒弃,公司需要有 更好更完善的权限体系,经过多轮沟通和协商,公司一致决定重新整理规划权限体系 ...
- 玩转IDEA项目结构Project Structure,打Jar包、模块/依赖管理全搞定
前言 你好,我是A哥(YourBatman). 如何给Module模块单独增加依赖? 如何知道哪些Module模块用了Spring框架,哪些是web工程? IDEA如何打Jar包?打War包? 熟练的 ...
- 我和小美的撸码日记(3)之中的一个句话搞定MVC表单页数据绑定与提交
另外献上在<线体验Demo地址>希望大家也能从中得到一些启示. 地址:http://121.40.148.178:8080/ . username:guest,password:12345 ...
- 面试阿里,美团,京东都会被问到的Spring ,从基础到源码帮你全搞定
1 前言 Spring是一个轻量级开源框架,它是为了解决企业应用开发的复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框 ...
- Linux服务器其中一个磁盘满了怎么办?在不做磁盘扩容的情况下,一个软连接就搞定。
适用环境要求:Linux系统及服务器.有管理员权限.存在多余空间的磁盘例如下图中"/home"在磁盘sda5中与"/"不属于同一块磁盘: 1.首先转移正在使用的 ...
- FineUIPro v3.5.0发布了,减少 90% 的上行数据量,15行代码全搞定!
一切为客户着想 一切的一切还得从和一位台湾客户的沟通说起: 客户提到将ViewState保存在服务器端以减少上行数据量,从而加快页面的回发速度. 但是在FineUI中,控件状态都保存在FState中, ...
随机推荐
- 在Visual Studio Code 中配置Python 中文乱码问题
在Visual Studio Code 中配置Python 中文乱码问题 方法一:直接代码修改字符集 添加前四行代码 import io import sys #改变标准输出的默认编码 sys.std ...
- Spring框架系列(14) - SpringMVC实现原理之DispatcherServlet处理请求的过程
前文我们有了IOC的源码基础以及SpringMVC的基础,我们便可以进一步深入理解SpringMVC主要实现原理,包含DispatcherServlet的初始化过程和DispatcherServlet ...
- 时空图神经网路:STGNNs
STGNNs:SPATIAL–TEMPORAL GRAPH NEURAL NETWORKS 许多实际应用中的图在图结构和图输入方面都是动态的.STGNNs在捕获图的动态性方面占有重要地位. 这类方法的 ...
- vivo官网APP全机型UI适配方案
vivo 互联网客户端团队- Xu Jie 日益新增的机型,给开发人员带来了很多的适配工作.代码能不能统一.apk能不能统一.物料如何选取.样式怎么展示等等都是困扰开发人员的问题,本方案就是介绍不同机 ...
- C#/VB.NET: 将Word或Excel文档转化为Text
Text文件只由纯文本内容组成,且没有格式,所以其大小比Word或Excel文件更小.除此之外,Text文件还具有跨平台性,几乎与所有应用程序都兼容.因此,在某些时候,我们可能需要将Word或Exce ...
- CS内网横向移动 模拟渗透实操 超详细
@Webkio 前言: 最近在跟朋友搞一些项目玩,所以最近没怎么更新内容接下来我将在虚拟中模拟内网多层靶场,进行内网渗透实验,超详细,适合小白.本文仅供网安学习,不可利用于未授权渗透工作中,否则后果自 ...
- 协程 && 异步例子
# 异步redis # 在使用python代码操作redis的时候,连接.操作.断开都是网络IO. # 安装aioredis模块: pip install aioredis==1.3.1 # 例: 该 ...
- 大数据管理系统架构Hadoop
Hadoop 起源于Google Lab开发的Google File System (GFS)存储系统和MapReduce数据处理框架.2008年,Hadoop成了Apache上的顶级项目,发展到今天 ...
- Luogu4391 [BOI2009]Radio Transmission 无线传输 (KMP)
\(最小循环节\) \(=\) \(lenghth - next[lenghth]\) #include <iostream> #include <cstdio> #inclu ...
- LuoguP3047 [USACO12FEB]附近的牛Nearby Cows(树形DP,容斥)
\[f[u][step] = \begin{cases} C[u] & step = 0 \\ (\sum{f[v][step - 1]}) - f[u][step - 2] \cdot (d ...