采用gitlab的package registry 方式 通过api 上传发布包,解决git命令拉取大文件异常退出问题

一、gitlab的package registry,解决git命令拉取大文件异常退出问题,上传文件命令可以按照:
1# 88-gongyin_publish群组下项目publish_file的ID【固定】
2# sit -定义哪个环境的介质 如集成测试环境 or 生产 prod【流水线入参】
3#20250205-定义哪个版本or日期的包【流水线入参】
4#xxx.zip - 介质名【流水线入参】

上传:curl --location --header "PRIVATE-TOKEN: xxxxxx" --upload-file xxx.zip "http://gitlabUrl/api/v4/projects/88/packages/generic/dev/20250205/xxx.zip"

二、按照api方式上传发布相关包到gitlab服务器上的具体操作方式如下:
1、下载附件curl的zip包到本地,解压附件(windows版本的);

2、准备好需要上传到gitlab上的包,这里以e.zip为例,假设存放包的路径为C:\Users\kj\Desktop\gitlab交付源码\curl-win64-latest\curl-8.12.0_1-win64-mingw\e.zip

3、可以进入解压的\curl-win64-latest\curl-8.12.0_1-win64-mingw\bin 里,按住shirt 键,右键选择--在此处打开命令窗口

4、为了将e.zip 上传到gitlab 上gongyin_publish / publish_file 下,执行如下命令

curl --location --header "PRIVATE-TOKEN: glpat-iAKchYsWdSKA-W47jL6D" --upload-file C:\Users\kj\Desktop\gitlab交付源码\curl-win64-latest\curl-8.12.0_1-win64-mingw\e.zip "https://gyleasegit.kjlink.com/api/v4/projects/29/packages/generic/dev

### 使用 Docker Git 仓库中的代码 为了实现从 Git 仓库中代码并将其构建为 Docker 镜像,可以采用多种方法。以下是详细的说明: #### 方法一:通过 Maven 插件完成代码与镜像构建 Maven 提供了一个名为 `docker-maven-plugin` 的插件,能够帮助开发者自动完成代码的编译、打包以及 Docker 镜像的创建过程[^2]。 在项目的 `pom.xml` 文件中配置该插件后,可以通过以下命令来触发整个流程: ```bash mvn clean package docker:build ``` 此命令会依次执行清理项目 (`clean`)、打包 JAR/WAR 文件 (`package`) 和构建 Docker 镜像 (`docker:build`) 的操作。具体配置如下所示: ```xml <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.2.2</version> <configuration> <imageName>${project.artifactId}:${project.version}</imageName> <baseImage>openjdk:8</baseImage> <entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> ``` 以上配置定义了目标镜像名称、基础镜像、容器启动时运行的命令等内容。 #### 方法二:利用 Jenkins 自动化工具集成 Git 和 Docker 如果希望进一步简化开发者的操作负担,则可借助 CI/CD 工具——例如 Jenkins 来自动化这一过程。安装好必要的插件之后,在 Jenkins 中设置流水线脚本即可实现从源码管理平台(如 Gitee 或 GitHub)获最新版本的代码,并最终生成对应的 Docker 镜像[^3]。 下面是一个简单的 Jenkins Pipeline 脚本实例: ```groovy pipeline { agent any stages { stage('Clone Repository') { steps { git branch: 'main', url: 'https://gitee.com/example.git' } } stage('Build with Maven') { steps { sh 'mvn clean install' } } stage('Create Docker Image') { steps { script { def app = docker.build("example-app:${env.BUILD_ID}") } } } stage('Push to Registry') { steps { script { docker.withRegistry('https://registry.example.com', 'credentials-id') { app.push() } } } } } } ``` 这段 Groovy 脚本描述了一条完整的持续交付管道,涵盖了克隆远程存储库、调用 Maven 构建应用程序及其依赖项、制作自定义容器映像并将它们推送到注册表服务等环节[^3]。 #### 方法三:手动编写 Dockerfile 并结合 Git 命令 对于某些场景下不需要复杂的构建环境或者想保持灵活性的情况来说,也可以选择直接编辑 Dockerfile 文件并通过标准 Shell 命令行接口来进行处理[^4]。 比如先下载所需资源再加入到工作区内的做法: ```Dockerfile FROM alpine/git AS clone-repo RUN git init && \ git remote add origin https://github.com/user/repo.git && \ git fetch --depth=1 origin main && \ git checkout FETCH_HEAD FROM openjdk:8-jdk-alpine WORKDIR /app COPY --from=clone-repo /root/.git . ADD target/*.jar app.jar ENTRYPOINT ["java","-jar","/app/app.jar"] ``` 上述示例展示了如何在一个多阶段构建过程中分离出专门用于复制特定分支提交记录的部分,然后再切换回常规 Java 运行时环境中继续其余部分的工作流设计思路。 --- ### 总结 综上所述,无论是依靠强大的生态系统组件还是单纯依赖于基本指令集组合而成的技术方案都可以满足实际需求;而究竟选用哪一种方式决于个人偏好和技术栈现状等因素影响下的权衡考量结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值