热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在GitLab中存储版本/二进制文件?

如何解决《如何在GitLab中存储版本/二进制文件?》经验,为你挑选了2个好方法。

我正在使用Gitlab,Jenkins和 - 可能 - Nexus构建一个工作流程(我需要一个工件存储).我想让GitLab存储版本/二进制文件 - 是否可以方便地进行存储?

我不希望有另一个服务可以从中下载发行版(和文档)但是以某种方式与存储库管理器集成,就像在GitHub中处理发布一样.有线索吗?



1> VonC..:

2015年11月更新:GitLab 8.2现在支持发布.

通过其API,您现在可以创建和更新与标记关联的relase.
目前,它只能将发行说明(降价文本和附件)添加到git标签(又称发行版).

首先上传发布二进制文件

创建新版本并在说明中放置上传二进制文件的链接


原始答案2015年3月

这项工作正在进行中,并在建议4156755中提出:

我们接受Ciro最小提案的合并请求:

    对于https://github.com/cirosantilli/test/releases/tag/3.0下的每个存储库标记,允许上载和下载文件列表.

    上传和下载可以直接从标签列表视图完成.

    如果标记被删除,则上传将被销毁.(我们不接受最近评论中提到的标签消息编辑)


对该建议的评论包括:

更有趣的是下一步.
我真的想要一种方法让公共下载工件从"发布"而不能访问源代码(即除了维基,"发布",问题跟踪器之外的任何其他东西,只为项目团队创建私有源).

但是,这样的附加功能看起来更通用,我提交了一个单独的功能请求.

尽管如此,我在此重复我的观点:
虽然"发布"的简单版本仍然很好,但很多人可以轻松地在GitLab外部设置外部文件服务器并将发布/标记描述中的URL指向此服务器.
换句话说,如果没有未来的整合图景,"发布"可能看起来并不吸引人.



2> Eenoku..:

这个答案将与VonC的答案基本相同,只是针对经验不足的CI用户以逐步的方式进行了描述。

假设您拥有一个非常酷的commit 30728cab,并且您希望将此代码版本重新发行...

1)为提交创建标签
git tag -a MY_TAG_NAME 30728cab

执行完此命令后,系统将要求您填写描述,就像对代码进行新更改时一样。

2)将标签推送到您的远程存储库

标记不会随您的提交自动推送到那里!您需要将它们手动推送到遥控器。

git push REMOTE_REPO_NAME REMOTE_BRANCH_NAME MY_TAG_NAME
3)上传文件

现在您可以a)将文件上传到GitLab存储库,b)将文件上传到其他任何地方,并在两种情况下都保存链接。

警告: 上传到GitLab存储库的文件无法轻易删除,以后您将看不到它们的链接!

由于上述原因,我不建议您将二进制文件上传到存储库,但您是要求这样做的,因此,方法如下:

curl --request POST --header "Private-Token: YOUR_PRIVATE_TOKEN" --form "file=@/PATH/TO/THE/FILE/file.txt" "https://MY_GITLAB_HOSTING.COM/api/v4/projects/MY_PROJECT_ID/uploads"

该私人令牌可以在创建用户设置- >访问令牌

另外,如果确实需要删除文件,则可以导出项目,updates从下载的存档中手动删除文件夹,删除以前的远程存储库,并通过导入下载的和修改的存档来创建一个新的远程存储库。

4)创建发布

现在,我们终于可以使用Release将它们捆绑在一起。

curl --request POST --header 'Content-Type: application/json' --header "Private-Token: YOUR_PRIVATE_TOKEN" --data '{"name": "MY_RELEASE_NAME", "tag_name": "MY_TAG_NAME", "description": "Release with the binary LINK_TO_YOUR_BINARY"}' "https://MY_GITLAB_HOSTING.COM/api/v4/projects/MY_PROJECT_ID/releases"

您可以看到,Release本质上与特定的标签绑定在一起,该标签随后又与特定的提交绑定在一起。然后,只需提供指向这些文件的链接即可执行与二进制文件的连接。

有趣的是,您description支持Markdown,但是*.md用这种繁琐的单行代码编写更大的文档确实很困难。因此,我编写了一个简短的Bash脚本,该脚本允许我们将Markdown文件放在一边,然后读取并自动发送它:

#!/bin/bash

RELEASE_NAME="$1"
TAG_NAME="$2"
PROJECT_ID="$3"
DESCRIPTION_FILE_PATH="$4"
PRIVATE_TOKEN="$5"

if [ "$5" == "" ]; then
    echo "Missing parameter! Parameters are RELEASE_NAME, TAG_NAME, PROJECT_ID, DESCRIPTION_FILE_PATH and PRIVATE_TOKEN.";
    exit 1;
fi

DESCRIPTION=''

# Load data from file
while read -r line; do
    DESCRIPTION="${DESCRIPTION}${line}\n";
done <"${DESCRIPTION_FILE_PATH}"

curl --request POST\
     --header 'Content-Type: application/json'\
     --header "Private-Token: ${PRIVATE_TOKEN}"\
     --data-binary "{\"name\": \"${RELEASE_NAME}\", \"tag_name\": \"${TAG_NAME}\", \"description\": \"${DESCRIPTION}\"}"\
     "https://MY_GITLAB_HOSTING.com/api/v4/projects/${PROJECT_ID}/releases" 

echo

所以你可以像

./upload_release.sh MY_RELEASE_NAME MY_TAG_NAME MY_PROJECT_ID MY_MARKDOWN_FILE_PATH MY_PRIVATE_TOKEN

现在就这样!您已经有了第一个完整版本!

直到意识到之前,您已经在发行说明的标题中输入了错误的拼写...

5)删除发行版(如果需要)

在这里,你真幸运!与上传的二进制文件不同,您也可以使用REST API删除发行版!

curl --request DELETE --header "Private-Token: MY_PRIVATE_TOKEN" "https://MY_GITLAB_HOSTING.com/api/v4/projects/MY_PROJECT_ID/releases/MY_TAG_NAME"

由于连续键入几次仍然很烦人,因此我制作了另一个Bash脚本:

#!/bin/bash

PROJECT_ID=$1
TAG_NAME=$2
PRIVATE_TOKEN=$3

if [ "$3" == "" ]; then
    echo "Missing parameter! Parameters are PROJECT_ID, TAG_NAME and PRIVATE_TOKEN.";
    exit 1;
fi

curl --request DELETE --header "Private-Token: ${PRIVATE_TOKEN}" "https://MY_GITLAB_HOSTING.com/api/v4/projects/${PROJECT_ID}/releases/${TAG_NAME}"

echo

可以像这样使用./delete_release.sh MY_PROJECT_ID MY_TAG_NAME MY_PRIVATE_TOKEN


推荐阅读
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ... [详细]
  • 本文介绍了一个React Native新手在尝试将数据发布到服务器时遇到的问题,以及他的React Native代码和服务器端代码。他使用fetch方法将数据发送到服务器,但无法在服务器端读取/获取发布的数据。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • Gitlab接入公司内部单点登录的安装和配置教程
    本文介绍了如何将公司内部的Gitlab系统接入单点登录服务,并提供了安装和配置的详细教程。通过使用oauth2协议,将原有的各子系统的独立登录统一迁移至单点登录。文章包括Gitlab的安装环境、版本号、编辑配置文件的步骤,并解决了在迁移过程中可能遇到的问题。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
author-avatar
Roux
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有