当前位置: 首页 > article >正文

gitlab自动打包python项目

现在新版的gitlab可以不用自己配置runner什么的了
直接写.gitlab-ci.yml文件就行,这里给出一个简单的依靠setup把python项目打包成whl文件的方法

首先写.gitlab-ci.yml文件,放到项目根目录里


stages:          # List of stages for jobs, and their order of execution
  - create_new_package

variables:
  PACKAGENAME: '包的名字'
  CI_DEBUG_TRACE: "true"

create_new_package:
  stage: create_new_package
  image: ubuntu:16.04
  rules:
    - if: $CI_COMMIT_TAG
#  only:
#    changes:
#      - bin
  script:
    - |
      apt-get update -y
      apt-get install curl -y
      apt-get install -y python3 python3-pip
      export VersionTag=${CI_COMMIT_TAG}
      python3 setup.py sdist bdist_wheel
      curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ./dist/${PACKAGENAME}-${CI_COMMIT_TAG}-py3-none-any.whl ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${PACKAGENAME}/${CI_COMMIT_TAG}/${PACKAGENAME}-${CI_COMMIT_TAG}-py3-none-any.whl

其中需要注意export VersionTag=${CI_COMMIT_TAG}
我这里是设置了个环境变量,用于动态获得打包的版本号,不然每次都要去setup文件里改
于是需要在setup.py里获取这个环境变量
version = os.environ[‘VersionTag’]
使用时写version=version就好了

然后这时候我们可以提交到gitlab仓库里
这时候我们要打tag,经过上面的设置,tag就是我们的版本号了
我用的是fork软件来进行git操作,命令行也是ok的
在这里插入图片描述
在你想要打包的最新版代码分支上右键,点击new tag,然后push就可以
gitlab会自动创建一个pipeline进行打包,打包成功后会在package registry中看到
在这里插入图片描述

这里有一个小坑就是,如果打的tag不是最新提交的那版代码,那就会一直卡在checking pipeline status中,我们需要删除tag重新在最新版上打
删除tag也要记得远端gitlab中和本地git中都要删除


http://www.kler.cn/a/419838.html

相关文章:

  • ElasticSearch学习篇19_《检索技术核心20讲》搜推广系统设计思想
  • Python中的函数参数
  • uniapp使用扩展组件uni-data-select出现的问题汇总
  • [Redis#13] cpp-redis接口 | set | hash |zset
  • Python 代码加速
  • API 数据接口使用与安全指南
  • 【vue】响应式(object.defineProperty)、可配置的参数、vue渲染机制
  • 华为HarmonyOS 让应用快速拥有账号能力 - 获取用户手机号
  • yolo11经验教训----之一
  • QT的槽函数的四种写法
  • ME6210:常用在个人通信设备电源里的低静态、低压差线性稳压器
  • @antv/x6 再vue中 ,自定义图形,画流程图、数据建模、er图等图形
  • linux网络抓包工具
  • 网际协议(IP)与其三大配套协议(ARP、ICMP、IGMP)
  • 【在Linux世界中追寻伟大的One Piece】多线程(三)
  • 为什么编程语言会设计不可变的对象?字符串不可变?NSString *s = @“hello“变量s是不可变的吗?Rust内部可变性的意义?
  • 源码分析之Openlayers中的Collection类
  • Web开发基础学习——HTML中\<div>元素的理解
  • arkTS:使用ArkUI实现用户信息的持久化管理与自动填充(PersistentStorage)
  • Java 面经之 Spring
  • 【Git系列】Git 提交记录过滤:排除特定关键词的实用指南
  • 【MySQL-6】MySQL的复合查询
  • 动态代理如何加强线上安全
  • 云服务器架构有什么区别?X86计算、Arm、GPU/FPGA/ASIC和裸金属全解析
  • 2024年通信网络与软件工程国际学术会议(ICCNSE 2024)
  • 嵌入式Linux之wifi配网脚本分析