因为项目需要用到发布版本管理,喜欢玩github的应该懂,gitlab中有release管理,有专有的业界规范。
国内局域网对于release的内容比较少,不过看官方文档也足够了,因此笔者针对release功能进行了简单探索。

文章目录

  • 需要你提前了解的东西
    • access token
    • project id
    • tag
  • API介绍
    • 查看release信息
      • 查看所有release信息
      • 查看指定release信息
    • 创建release
    • 修改release
    • 删除release
    • 创建一个外部文件
  • 脚本文件

需要你提前了解的东西

首先,目前的版本中,gitlab并没有支持界面操作,基本如果用到这个功能,只能通过它的API进行操作。不过不算复杂,http restful玩的6的应该不需要学习。

access token

翻译过来是准入令牌,说白了,因为你的操作都是restful API,为了安全,需要先在gitlab进行鉴权。
[gitlab] release功能-编程知识网
[gitlab] release功能-编程知识网

project id

每个gitlab中的项目都有一个唯一识别号,我们称之为project id,project id可以在项目的首页看到:
[gitlab] release功能-编程知识网

tag

中文翻译为标签。某些程度上面,tag和release你都可以认为是快照的概念。
release基于tag,因此需要先打标签:

[gitlab] release功能-编程知识网
[gitlab] release功能-编程知识网

API介绍

如果没有其他操作,生成release就是把某个版本牵出来,里面都是该版本的源码,将会生成4种文件:
zip, tar.gz, tar.bz2tar

查看release信息

查看所有release信息

GET /projects/:id/releases

示例:
[app@csybapp3 soft]$ curl --header "PRIVATE-TOKEN: XXXXXXXXXXXXX" http://ip地址/api/v4/projects/工程id/releases

懒得截图了,都是敏感信息。

查看指定release信息

GET /projects/:id/releases/:tag_name

示例:
[app@csybapp3 soft]$ curl --header "PRIVATE-TOKEN: XXXXXXXXXXXXX" http://ip地址/api/v4/projects/工程id/releases/标签id

创建release

POST /projects/:id/releases

示例:

curl --header 'Content-Type: application/json' --header "PRIVATE-TOKEN: XXXXXXXXXXXXX" --data '{ "name": "'release名称'", "tag_name": "'标签名'", "ref":"'标签名'" ,"description": "'描述信息'" }' --request POST http://ip地址/api/v4/projects/工程id/releases

修改release

PUT /projects/:id/releases/:tag_name

示例:

curl --request PUT --data name="new name" --header "PRIVATE-TOKEN: gDybLx3yrUK_HLp3qPjS" "http://localhost:3000/api/v4/projects/24/releases/v0.1"

删除release

DELETE /projects/:id/releases/:tag_name

示例:

curl --request DELETE --header "PRIVATE-TOKEN: gDybLx3yrUK_HLp3qPjS" "http://localhost:3000/api/v4/projects/24/releases/v0.1"

创建一个外部文件

效果如下图:
[gitlab] release功能-编程知识网
也就是说,如果你想在版本中维护一个编译好的二进制文件,可以通过名叫links的方式,即外链,文件不会存储到gitlab,你可以放到ftp或者apache上面。

我推荐使用的是这种追加的形式:

curl --request POST  --header "PRIVATE-TOKEN: $token"  --data name="$release_file_name"   --data url="$release_path"  "http://$GITLAB_URL/api/v4/projects/$id/releases/$tag_name/assets/links"

脚本文件

看到这里的话,送个福利给你,我自己写的脚本文件,比较简单,但是也很实用,有需要可以拿去,或者自己再加修改:

#!/usr/bin/env bash  GITLAB_URL="172.18.20.41"echo -n "0.请输入Gitlab Access Token:"  
read token  
echo -n "1.请输入项目的id:"  
read id  
echo -n "2.请输入项目release的名称:"  
read name  
echo -n "3.请输入即将创建release版本的tag:"  
read tag_name  
echo -n "4.请输入release的描述:"  
read description  
echo -n "5.请输入release二进制文件名称:"  
read release_file_name  
echo -n "6.请输入release二进制文件发布路径:"  
read release_path  #创建发布版本  
curl --header 'Content-Type: application/json' --header "PRIVATE-TOKEN: $token" --data '{ "name": "'$name'", "tag_name": "'$tag_name'", "ref":"'$tag_name'" ,"description": "'$description'" }' --request POST http://$GITLAB_URL/api/v4/projects/$id/releases#创建二进制文件链接
curl --request POST  --header "PRIVATE-TOKEN: $token"  --data name="$release_file_name"   --data url="$release_path"  "http://$GITLAB_URL/api/v4/projects/$id/releases/$tag_name/assets/links"