如何在GitHub Actions构建流程中下载已发布的GitHub包?
解决GitHub CI中下载同组织仓库已发布包的方法
针对你需要在CI流程中下载同组织下另一仓库已发布jar包并打包进Docker镜像的需求,以下两种方案可直接实现:
一、使用GitHub Action下载
1. 下载GitHub Releases中的jar资产
如果目标jar包是作为Releases附件发布的,可使用第三方Action快速下载:
- name: 下载目标仓库的Releases jar包 uses: dawidd6/action-download-release-asset@v2 with: owner: 你的组织名称 repo: 目标仓库名称 tag: v1.0.0 # 替换为实际的发布版本tag asset: app.jar # 替换为要下载的jar文件名 path: ./downloads # 下载后存放的路径,可按需调整
2. 下载GitHub Packages中的Maven jar包
如果jar包发布在GitHub Packages的Maven仓库中,可通过Maven命令直接下载(仅执行下载操作,无需本地安装依赖):
- name: 下载GitHub Packages中的jar包 run: | mvn dependency:copy \ -Dartifact=你的组织ID:artifactId:版本号:jar \ -DoutputDirectory=./downloads env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
二、使用curl命令直接下载
1. 下载GitHub Releases中的jar资产
无需第三方Action时,可通过GitHub API配合curl实现:
# 第一步:获取指定版本jar包的下载链接 ASSET_URL=$(curl -s \ -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ https://api.github.com/repos/你的组织名/目标仓库名/releases/tags/v1.0.0 \ | jq -r '.assets[] | select(.name == "app.jar") | .browser_download_url') # 第二步:下载jar包到指定目录 curl -L -o ./downloads/app.jar $ASSET_URL
注:需确保CI环境已安装jq工具,未安装可提前添加apt-get install jq之类的安装步骤。
2. 下载GitHub Packages中的Maven jar包
直接通过Packages的专属链接获取:
curl -L \ -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ -o ./downloads/app.jar \ https://maven.pkg.github.com/你的组织名/目标仓库名/你的包路径/版本号/文件名.jar
注意事项
- 若目标仓库为私有仓库,需确保
GITHUB_TOKEN拥有该仓库的读取权限;权限不足时,可使用个人访问令牌(PAT)并存储在仓库Secrets中。 - 下载完成后,在Docker构建阶段将
./downloads目录下的jar包复制到镜像内即可。
内容的提问来源于stack exchange,提问作者Sharath Chandra
相关产品推荐
相关产品推荐

