
安全好用的OpenApi
本文详细介绍了如何通过GitLab API上传和管理压缩包文件,包括创建Access Token、使用curl命令上传文件以及编写脚本实现自动化操作。通过这些方法,可以轻松解决Git命令拉取大文件异常退出的问题,同时实现对开发、测试、生产环境的包管理,提升工作效率。
GitLab 的 Package Registry 是一个强大的工具,允许用户上传和管理软件包文件。通过 GitLab API 上传压缩包,不仅可以高效地存储文件,还能规避传统 Git 命令拉取大文件时的异常问题。
GitLab 的 Package Registry 是一种包管理工具,可以将构建的二进制包存储到指定项目中,便于后续的分发和使用。例如,开发者可以将构建的压缩包文件上传到指定的 GitLab 项目中,从而实现版本化管理。
上传文件至 GitLab Package Registry 的基础命令如下:
curl --location --header "PRIVATE-TOKEN: " --upload-file "http://gitlabUrl/api/v4/projects//packages/generic///"
以上命令中,需替换 <your_access_token>
、<your_file_path>
、<project_id>
等参数。
假设要上传名为 xxx.zip
的压缩包到项目 88
,并指定环境为 prod
,版本为 20250205
,命令如下:
curl --location --header "PRIVATE-TOKEN: xxxxxx" --upload-file xxx.zip "http://gitlabUrl/api/v4/projects/88/packages/generic/prod/20250205/xxx.zip"
执行成功后,会返回类似 {"message":"201 Created"}
的响应。
使用 curl
命令上传压缩包到 GitLab 是一种非常高效且简洁的方式。以下是具体操作步骤:
curl --version
,验证安装是否成功。在开始上传之前,需要准备好要上传的压缩包文件。例如:将文件 e.zip
放置在以下路径:
C:UserskjDesktopgitlab交付源码curl-win64-latestcurl-8.12.0_1-win64-mingwe.zip
打开文件所在路径的命令窗口,执行以下命令:
curl --location --header "PRIVATE-TOKEN: glpat-iAKchYsWdSKA-W47jL6D" --upload-file C:UserskjDesktopgitlab交付源码curl-win64-latestcurl-8.12.0_1-win64-mingwe.zip "https://gyleasegit.kjlink.com/api/v4/projects/29/packages/generic/dev/20250206/e.zip"
执行成功后,会返回 {"message":"201 Created"}
。
在 GitLab 中,每次上传都需要提供一个具有权限的 Access Token。以下是创建 Access Token 的具体步骤:
Settings
。Access Tokens
菜单。UploadToken
。api
和 write_repository
。Create personal access token
按钮。可以随时回收 Token。点击 Revoke
即可停止该 Token 的有效性。
如果需要频繁上传多个文件,可以编写脚本实现批量化操作。
以下是一个 Bash 脚本示例:
#!/bin/bash
if [ -z "$version" ]; then
echo "no version was given"
exit 1
fi
if [ -z "$access_token" ]; then
echo "no access_token was given"
exit 1
fi
if [ -z "$package" ]; then
echo "no release package path was given"
exit 1
fi
if [ -z "$projectId" ]; then
echo "no project Id was given"
exit 1
fi
binaries=($package)
baseUrl=http://192.168.1.110:8929
for binary in "${binaries[@]}"; do
name=$(basename "$binary")
res=$(curl --request POST --header "PRIVATE-TOKEN: $access_token" --form "file=@$binary" "$baseUrl/api/v4/projects/$projectId/uploads")
fullpath=$(echo $res | grep -oP '"full_path":"K[^"]*')
if [ ! -z "$fullpath" ]; then
curl --header "Content-Type: application/json" --request POST --header "PRIVATE-TOKEN: $access_token" --data "{ "id": "$name", "name":"$name","url":"$baseUrl/$fullpath"}" "$baseUrl/api/v4/projects/$projectId/releases/$version/assets/links"
fi
done
将上述脚本命名为 publish.sh
,并在 .gitlab-ci.yml
文件中调用:
stages:
- publish
publish:
stage: publish
script:
- chmod +x ./publish.sh
- ./publish.sh
only:
refs:
- tags
GitLab CI/CD 提供了强大的流水线功能,可以将上传脚本集成到流水线中。
以下是一个 .gitlab-ci.yml
示例:
stages:
- publish
upload:
stage: publish
script:
- export package=
- export version=$CI_COMMIT_TAG
- export access_token=
- export projectId=
- ./upload.sh
only:
refs:
- tags
当推送新的 Tag 时,流水线会自动触发,并完成包文件的上传。
在使用 GitLab Package Registry 时,环境和版本的管理至关重要。
建议使用日期或版本号作为命名规则,例如:
20250205
表示 2025 年 2 月 5 日的版本。v1.0.0
表示软件的正式版本。在上传命令中指定路径:
curl --location --header "PRIVATE-TOKEN: xxxxxx" --upload-file xxx.zip "http://gitlabUrl/api/v4/projects/88/packages/generic/prod/20250205/xxx.zip"
上传完成后,需要验证文件是否成功上传。
执行上传命令后,查看返回的响应,确保包含:
{"message":"201 Created"}
登录 GitLab,进入目标项目,导航至 "部署 > 软件包库",即可看到刚刚上传的文件。
使用以下命令下载文件,检查文件是否正确:
curl -s -O --header "PRIVATE-TOKEN: ${token}" "http://${gitlab}/api/v4/projects/${project_id}/packages/generic/${name}/${version}/${file}"
上传和下载的验证工作至关重要,能够确保文件的完整性和可用性。
<your_access_token>
、<your_file_path>
、<project_id>
等参数。api
和 write_repository
),然后点击 Create personal access token
按钮生成 Token。完成后,请务必保存 Token。{"message":"201 Created"}
来验证上传状态。随后,登录 GitLab,进入目标项目,导航至 "部署 > 软件包库",查看上传的文件信息。此外,可以使用下载命令验证文件的完整性和可用性。