使用GitHub Packages托管软件包和镜像

a31be217c5c233cd15cec85ef8b6ce64.png

image.png


GitHub Packages 是一个用于托管和管理包的平台,包括容器镜像和其他依赖项。GitHub Packages 将您的源代码和软件包组合在一处,提供集成的权限管理和计费,因此可以在 GitHub 上集中软件开发。

可以将 GitHub Packages与 GitHub API、GitHub Actions和 Webhook 集成,以创建包含代码、CI 和部署解决方案的端到端 DevOps 工作流。
7be01d82f6dd13c87e3e20809e49d424.png

GitHub Packages 为常用的包管理器提供了不同的包注册表,例如 npm、RubyGems、Apache Maven、Gradle、Docker 和 NuGet。GitHub 的容器注册表针对容器进行了优化,并支持 Docker 和 OCI 镜像。
e6b140fcf120fe572e2f3e0009f2c8cc.png

对包注册表的支持

语言描述包格式包客户端
JavaScript节点包管理器package.jsonnpm
RubyRubyGems 包管理器Gemfilegem
JavaApache Maven 项目管理和理解工具pom.xmlmvn
JavaJava 的 Gradle 构建自动化工具build.gradle 或 build.gradle.ktsgradle
.NET.NET 的 NuGet 包管理nupkgdotnet CLI
不适用Docker 容器管理平台DockerfileDocker

通过 GitHub Actions 发布到 GitHub Packages


  1. 创建仓库,克隆到本地

$ git clone https://github.com/YOUR-USERNAME/YOUR-REPOSITORY.git
$ cd YOUR-REPOSITORY
  1. 创建一个测试用的index.js文件

alert("Hello, World!");
  1. 初始化生成package.json文件

使用 npm init 初始化 npm 包。在包初始化向导中,输入包名称:@YOUR-USERNAME/YOUR-REPOSITORY,将测试脚本设置为 exit 0。这将生成一个 package.json 文件,其中包含关于您的包的信息。

$ npm init
  ...
  package name: @YOUR-USERNAME/YOUR-REPOSITORY
  ...
  test command: exit 0
  ...
  1. 运行 npm install  来生成 package-lock.json 文件,然后提交并将更改推送到 GitHub。

$ npm install
$ git add index.js package.json package-lock.json
$ git commit -m "initialize npm package"
$ git push
  1. 创建CI文件

创建 .github/workflow 目录。在该目录中,创建一个名为 release-package.yml 的文件。

name: Node.js Package

on:
  release:
    types: [created]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: 12
      - run: npm ci
      - run: npm test

  publish-gpr:
    needs: build
    runs-on: ubuntu-latest
    permissions:
      packages: write
      contents: read
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: 12
          registry-url: https://npm.pkg.github.com/
      - run: npm ci
      - run: npm publish
        env:
          NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
  1. 配置Npm仓库

在根目录中创建包含以下内容的 .npmrc 文件,为仓库添加 NPM 配置文件:
@YOUR-USERNAME:registry=https://npm.pkg.github.com


编辑 package.json 文件,并指定 publishConfig 密钥:
"publishConfig": {
   "@YOUR-USERNAME:registry": "https://npm.pkg.github.com"
 }
  1. 提交代码

$ git add .github/workflows/release-package.yml
# Also add the file you created or edited in the previous step.
$ git add .npmrc or package.json
$ git commit -m "workflow to publish package"
$ git push

只要您的仓库中创建新版本,您创建的工作流程就会运行。如果测试通过,则包将发布到 GitHub Packages。

7b724ec1e0dda53fbc4f2bfee37028af.png7a1c93ff3e7f258ea4eaa0c1a8d00b2c.png

欢迎投稿,微信:devopsvip。

DevOps云学堂,专注于企业级DevOps运维开发技术实践分享。2021 全新升级!《DevOps端到端工具链实践》训练营。运维与开发同学的进阶之路!识别下面图片了解详情。

e623a68b83dd37eca5ff5a010016f74c.png

45c9c7243694b379776e985a77bc8a80.png

更多DevOps实践,请关注「DevOps云学堂」

2fd91a086afa9d6fb623512d1107179f.gif 点击阅读原文,进入DevOps学堂

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值