前置知识: GitHub

GitHub-Packages

00:00
2 min Intermediate 2026/6/14

GitHub Packages详解:包注册表、发布与使用私有包。

1. Packages 概述

1.1 什么是 GitHub Packages

GitHub Packages 是内置的托管服务,可以将直接发布到 GitHub 仓库

1.2 支持的包类型

注册前缀
npmJavaScript@OWNER/PACKAGE
MavenJavacom.owner:package
GradleJava/Kotlin同 Maven
Docker容器镜像ghcr.io/OWNER/IMAGE
NuGet.NET标准 NuGet
RubyGemsRuby标准 Gem
PyPIPython标准 PyPI

2. npm 包发布

2.1 配置 .npmrc

//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}
@myorg:registry=https://npm.pkg.github.com

2.2 配置 package.json

{
  "name": "@myorg/my-package",
  "version": "1.0.0",
  "repository": {
    "type": "git",
    "url": "https://github.com/myorg/my-package.git"
  },
  "publishConfig": {
    "registry": "https://npm.pkg.github.com"
  }
}

2.3 发布

# 使用 GITHUB_TOKEN
npm publish

2.4 安装

npm install @myorg/my-package

3. Docker 镜像

3.1 登录

echo $GITHUB_TOKEN | docker login ghcr.io -u USERNAME --password-stdin

3.2 推送镜像

docker build -t ghcr.io/myorg/my-app:v1.0.0 .
docker push ghcr.io/myorg/my-app:v1.0.0

3.3 拉取镜像

docker pull ghcr.io/myorg/my-app:v1.0.0

4. CI/CD 集成

# .github/workflows/publish.yml
name: Publish Package
on:
  release:
    types: [created]

jobs:
  publish:
    runs-on: ubuntu-latest
    permissions:
      packages: write
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
          registry-url: 'https://npm.pkg.github.com'
      - run: npm ci
      - run: npm publish
        env:
          NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

5. 包权限

权限说明
继承权限权限与关联一致
公开所有下载
私有仅授权用户下载

知识检测

学习进度

-- 已学文档
--% 知识覆盖率

学习推荐

专注模式