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,推荐给你这篇文章

无需本地搭建,快速启动 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 实验环境

最新文章

  1. WPF实现无边框窗体拖拽右下角▲ 改变窗体大小【framwork4.0】 谢谢大家关注
  2. poj1113--凸包(Andrew)
  3. nginx 伪静态
  4. 【云计算】开源的Docker Registry WebUI
  5. java request判断微信客户端访问
  6. 红眼技术博客 » redis连接池红眼技术博客 » redis连接池
  7. PHP获得上(两)周时间
  8. python编程基础知识—列表(一)
  9. Spark Streaming编程指南
  10. P1169 [ZJOI2007]棋盘制作 DP悬线法
  11. Mac下文件的编码及修改编码
  12. requirejs 使用实例r.js打包
  13. django-debug-toolbar和Django 日志配置
  14. mui框架下监听返回按钮
  15. python全栈开发笔记---------基本数据类型
  16. SSL/TLS Server supports TLSv1.0
  17. CRTD异常案例及原因
  18. 使用Python完成排序(冒泡、选择、插入法)
  19. java 生成jar包并保留注释
  20. MAVEN最佳实践:模块划分

热门文章

  1. InheritableThreadLocal 在线程池中进行父子线程间消息传递出现消息丢失的解析
  2. Multiparty Cardinality Testing for Threshold Private Set-2021:解读
  3. C# --- SqlserverHelper帮助类、快速实现增删改查
  4. NC17400 gpa
  5. 字节输入流_InputStream类&amp;FileInputStream类介绍和字节输入流读取字节数据
  6. java,接口
  7. Ubuntu安装python各版本
  8. 从工程师到技术leader思维升级
  9. 03 uniapp自定义导航栏的开发
  10. 【一本通提高组合数学】 计算系数(NOIP2011提高组)