如何向gitlab发布的附件里上传文件

news2024/11/25 14:36:48

gitlab 发布后在附件里会有打包好的源码,类似下图

笔者想把构建好的文件也打包放在这个附件里,经过研究可行,步骤分享如下

注:笔者用的gitlab版本为12.10.3

创建Access Token

登录gitlab,点击右上角图像,点击Settings

 

点击左侧菜单Access Tokens

 输入token的名称,有效期不填即永不过期,勾选api,write_repository,点击 create personal access token, 将生成的token值另外保存起来。

 当然,你也可以回收这个token,点击Revoke。

 编写上传脚本

#!/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

#uploading binary to asset for release
binaries=($package)
baseUrl=http://192.168.1.110:8929
  
for i in "${!binaries[@]}"; do
    binary=${binaries[i]}
	name=$(echo "$binary" | sed -e "s/.*\/\([^/]*\)/\1/")
    res=$(curl --request POST --header "PRIVATE-TOKEN: $access_token" --form "file=@$binary" "$baseUrl/api/v4/projects/$projectId/uploads")
    fullpath=$(echo $res | sed -e "s/.*\"full_path\":\"\([^\"]*\)\".*/\1/")
	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
 

 在.gitlab-ci.yml调用该脚本, 类似如下 

stages:
  - publish
          
publish:
  stage: publish
  script:
     - export package=<your package file Path>
     - export version=$CI_COMMIT_TAG
     - export access_token=<access token>
     - export projectId=<project id>
     - chmod +x ./publish.sh
     - ./publish.sh
  only:
    refs:
     - tags

 package 就是你要是上传的附件的文件路径

 $CI_COMMIT_TAG 就是你进行release时填写的tag

access_token 就是刚才上面步骤创建的access token

project id   是你要上传的项目仓储的id (如下图所示)

 

最终效果如下

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/89226.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux基本命令(3)

Linux基本命令(3) &#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;Linux &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 本博客主要讲解了最后一部分常用的Linux指令和一些热…

1年时间,从小公司到美团测试开发,我做对了这些事情....

&#x1f4cc; 博客主页&#xff1a; 程序员二黑 &#x1f4cc; 专注于软件测试领域相关技术实践和思考&#xff0c;持续分享自动化软件测试开发干货知识&#xff01; &#x1f4cc; 公号同名&#xff0c;欢迎加入我的测试交流群&#xff0c;我们一起交流学习&#xff01; 我的…

优化cv2.findContours()函数提取的目标边界点,使语义分割进行远监督辅助标注

优化cv2.findContours()函数提取的目标边界点 假设我们想要提取的目标边界长这样&#xff1a; 我们先使用以下代码查看效果 import cv2 import numpy as np import osif __name__ __main__:# 图像可以选择自己的image_filepath ./landslide/image/20221129112713.png# 读取…

Java并发和多线程编程学习(二) Java内存模型

并发编程中需要处理的两个重要问题是线程之间如何通信以及线程之间如何同步&#xff0c;Java的并发采用的是共享内存模型&#xff0c;且线程之间的通信总是隐式执行&#xff0c;所以需要我们深入学习从而避免复杂的内存可见性问题 内存模型的抽象结构 在Java中&#xff0c;所…

java计算机毕业设计ssm基于H5的音乐播放管理系统

项目介绍 该系统是基于H5,使用Vue、JavaScript、CSS技术开发而成。系统服务器使用Tomcat,利用MySQL存储数据、用JDBC实现数据的访问。管理员在系统部署阶段将所有用户对应权限进行分配。正式投入使用时,用户通过登录模块进入系统。根据权限控制管理,每个用户角色的操作界面也有…

【轻量级开源ROS 的机器人设备(4)】--(2)通信实现

前文链接 【轻量级开源ROS 的机器人设备&#xff08;4&#xff09;】--&#xff08;1&#xff09;通信模块_无水先生的博客-CSDN博客 三、 通信概要 概述 ROS 的通信层是 ros_comm 堆栈的一部分&#xff0c;遵循发布/订阅范式&#xff0c;如图 2.2 所示。网络&#xff0c;也称…

(设计模式) (李建忠 C++) 23种设计模式

文章目录前言组件协作模板方法 Template Method动机模式定义结构代码情景版本1版本2变化原理要点总结个人小结策略模式 Strategy动机模式定义结构代码情景版本1版本2要点总结个人小结观察者模式 Observer动机模式定义结构代码场景版本1版本2版本2要点总结个人小结单一职责装饰模…

斐波那契问题——上台阶问题

题目&#xff1a; 给定整数N&#xff0c;代表台阶数&#xff0c;一次可以跨2个或者1个台阶&#xff0c;返回有多少种走法。 举例&#xff1a; N3&#xff0c;可以三次跨一个台阶&#xff0c;也可以先跨2再跨1&#xff0c;也可以先跨1再跨2&#xff0c;共三种走法。 思路&…

上海还有哪些比较好的IB学校?

今天我们就一起来盘点沪上几所办学成绩比较好的IB学校&#xff0c;快来看看哪所学校才是孩子的最好选择&#xff01; Promise 上海民办平和学校 上海市民办平和学校&#xff08;Shanghai Pinghe School&#xff09;是由上海金桥&#xff08;集团&#xff09;有限公司于1996年9月…

常用Java接单平台一览

不少主攻Java的程序员兄弟除了工作&#xff0c;还会在空闲时间选择接单来增加自己的收入&#xff1b;对于那些生活在二三线的程序员兄弟们&#xff0c;通过接单&#xff0c;来获得与一线城市对等的收入。具体该怎么做&#xff0c;且听我娓娓道来。接下来干货满满&#xff0c;先…

前端—新增的嵌入多媒体元素与交互性元素

新增的嵌入多媒体元素与交互性元素 新增的嵌入多媒体元素有video和audio元素&#xff0c;分别是用来插入视频和声音的。值得注意的是&#xff0c;可以在开始标签和结束标签之间放置文本内容&#xff0c;这样旧版本的浏览器就可以显示出不支持该标签的信息。例如下面的代码。HT…

Qt Visual Studio添加Qt ui和编译注意事项

文章目录背景新建Widget 对象UIC程序生成ui_xxxx.h文件编译出错设置QtWidgetsTestClass.h的属性总结背景 工程中需要新的界面VS中新建Qt的ui文件&#xff0c;然后需要生成对应的.cpp 和 .h 文件 新建Widget 对象 生成对应的三个文件.ui, xxx. cpp, xxx.h 但是此时在QtWidget…

IDEA报错问题:If you already have a 64-bit JDK installed 解决方法【杭州多测师_王sir】【杭州多测师】...

启动IDEA的时候突然报错&#xff1a; 第一步&#xff1a;首先进入到C:\Users\用户名\.IdeaIC2019.3\config这个目录下面找到idea64.exe.vmoptions文件 第二步&#xff1a;通过notepad打开&#xff0c;进入编辑 第三步&#xff1a;然后修改配置如下&#xff1a;把Xms和Xmx的参数…

[MySQL]-主从同步实战

[MySQL]-主从同步实战 森格 | 2022年12月14日 本文主要为在平时work中遇到的主从同步上的问题的处理&#xff0c;对其进行巩固总结。 一、场景介绍 ​ 在一个风和日丽的下午4点半&#xff0c;突然就收到一个主从同步失败的提示&#xff0c;三两下打开从库一看&#xff0c;好嘛…

Stimulsoft Reports 2023.1.1 Crack 根据自身需求选择

Stimulsoft 专门从事 Microsoft .NET Framework 组件的开发。客户满意是公司的首要任务&#xff0c;因此它旨在生产顶级质量的软件。应用程序开发并不总是那么容易&#xff0c;但 Stimulsoft 尽最大努力帮助开发人员将当今市场上最先进的技术整合到他们的应用程序中 特征 Razor…

老照片修复怎么修?这三个方法可以让你实现修复操作

相信大家在家里翻看以前的照片时&#xff0c;会发现有部分照片颜色已经泛黄&#xff0c;内容也跟着变得有些模糊不清了&#xff0c;那当我们遇到这种情况的时候&#xff0c;应该怎么办呢&#xff1f;别担心&#xff0c;今天就来教大家几个实用的方法&#xff0c;让大家学会老照…

stm32 adc dma

ADC采集电压&#xff0c;使用DMA传输到内存 一&#xff0c;ADC设置 1,Mode。 这里我们使用ADC的独立模式。 2&#xff0c;时钟分频 ADCCLK由 PCLK2分频得到&#xff0c;最大时钟频率36M。ADC 时钟太快&#xff0c;采样可能不够准确&#xff0c;误差大。 3&#xff0c;采样分…

砥砺深耕,笃行致远向未来——中国社科院与美国杜兰金融管理硕士项目

想在一个领域里有所发展&#xff0c;相信深耕下去一定会有收获。工作中积累的实战经验或是在文章上看到的补给型知识大都属于碎片化的&#xff0c;系统的学习理论知识很重要&#xff0c;尤其对于金融行业&#xff0c;中国社科院与美国杜兰大学合办金融管理硕士项目的出现&#…

演讲实录|OpenMLDB 与阿里云 MaxCompute 生态集成

在 OpenMLDB 第 8 期 Meetup 中&#xff0c;OpenMLDB PMC 陈迪豪以出租车行车时间预测问题为例&#xff0c;使用 OpenMLDB 基于阿里云 MaxCompute 的 Serverless 服务搭建机器学习应用&#xff0c;从数据引入开始&#xff0c;实现了端到端的机器学习应用全流程构建。 云服务作…

软件工程---习题五

1.为每种类型的模块耦合举一个具体例子。   答&#xff1a;耦合式对一个软件结构内不同模块之间互联程度的度量。耦合强弱取决于接口的复杂度&#xff0c;进入或访问某一模块的点&#xff0c;以及通过接口的数据。一般模块之间的可能的连接方式有七种&#xff0c;构成耦合的七…