Apache Maven、Gradle、NuGet 和 RubyGems 包

其他类型的包与 npm 和 Docker 基本相同:如果你了解本地的包管理器,它们非常容易使用。以下是对每种类型的简要介绍:

Java with Apache Maven

对于使用 Maven 的 Java 包,你只需在 pom.xml 文件中添加你的包注册表配置:

<distributionManagement>
  <repository>
    <id>github</id>
    <name>GitHub Packages</name>
    <url>https://maven.pkg.github.com/user/repo</url>
  </repository>
</distributionManagement>

然后,你可以在工作流中使用 GITHUB_TOKEN 发布你的包:

- name: Publish package
  run: mvn --batch-mode deploy
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

要从你的开发机器获取包,你需要使用具有 read:packages 权限的个人访问令牌 (PAT) 进行身份验证。你可以在 GitHub 的 Settings | Developer Settings | Personal access tokens 下生成新的令牌。将你的用户名和 PAT 添加到 ~/.m2/settings.xml 文件中。

Gradle

在 Gradle 中,你需要将注册表添加到 build.gradle 文件中。你可以从环境变量中读取用户名和访问令牌:

repositories {
  maven {
    name = "GitHubPackages"
    url = "https://maven.pkg.github.com/user/repo"
    credentials {
      username = System.getenv("GITHUB_ACTOR")
      password = System.getenv("GITHUB_TOKEN")
    }
  }
}

在工作流中,你可以使用 gradle publish 发布包:

- name: Publish package
  run: gradle publish
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

RubyGems

如果你想为仓库中的所有 .gemspec 文件构建和发布 gem,你可以使用一个来自 GitHub 市场的操作:

- name: Build and publish gems for .gemspec files
  uses: jstastny/publish-gem-to-github@master
  with:
    token: ${{ secrets.GITHUB_TOKEN }}
    owner: OWNER

为了使用 RubyGems,你至少需要 RubyGems 2.4.1 和 Bundler 1.6.4。修改 ~/.gemrc 文件并添加注册表作为源,提供你的用户名和个人访问令牌来安装包:

---
:backtrace: false
:bulk_threshold: 1000
:sources:
- https://rubygems.org/
- https://USERNAME:TOKEN@rubygems.pkg.github.com/OWNER/
:update_sources: true
:verbose: true

要使用 Bundler 安装包,你还必须使用你的用户和令牌进行配置:

$ bundle config https://rubygems.pkg.github.com/OWNER USERNAME:TOKEN

NuGet

要发布 NuGet 包,你可以使用 setup-dotnet 操作。它具有额外的 source-url 参数。令牌通过环境变量设置:

- uses: actions/setup-dotnet@v1
with:
dotnet-version: '5.0.x'
source-url: https://nuget.pkg.github.com/OWNER/index.json
env:
NUGET_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

然后,你可以构建并测试你的项目。之后,只需打包并将包推送到注册表:

- run: |
dotnet pack --configuration Release
dotnet nuget push "bin/Release/*.nupkg"

要安装包,你需要将注册表添加为 nuget.config 文件中的源,并包括你的用户和令牌:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="github" value="https://nuget.pkg.github.com/OWNER/index.json" />
</packageSources>
<packageSourceCredentials>
<github>
<add key="Username" value="USERNAME" />
<add key="ClearTextPassword" value="TOKEN" />
</github>
</packageSourceCredentials>
</configuration>