gitlab自动打包python项目

现在新版的gitlab可以不用自己配置runner什么的了

直接写.gitlab-ci.yml文件就行,这里给出一个简单的依靠setup把python项目打包成whl文件的方法

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

yaml 复制代码
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中都要删除

相关推荐
冻柠檬飞冰走茶5 分钟前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划
FRing0321 分钟前
vue2干货总结7(自定义指令、插槽、单页应用程序、路由的使用(VueRouter))
开发语言·前端·vue.js·vue2
橙橙笔记22 分钟前
具身智能的学习 - 完成一个机械臂 第1节
python·学习·机械臂·具身智能
雪落漂泊25 分钟前
C++算法 二分查找篇(上)
开发语言·c++·算法
小小张说故事30 分钟前
Python 的 class 语句到底执行了什么?拆开 __prepare__、metaclass.__new__ 和那个被讲反的 __set_name__ 顺序
python
波力海苔夹心脆6751 小时前
C# WPF 资源字典详解:ResourceDictionary、MergedDictionaries 与自定义控件案例
开发语言·c#·wpf·入门教程·resource·资源字典
不会算法的笨小孩2 小时前
异常的使用以及会出现的问题
开发语言·c++·c++11·异常
天天被压力3 小时前
【A股分钟级高频数据完全手册 #07】北交所历史分钟K线接口:京市Pro版分时批量
java·人工智能·python
天天被压力3 小时前
【A股分钟级高频数据完全手册 #08】股票日、分时数据接口对比:普通分时与Pro版差异实测
java·人工智能·python
特立独行的猫A3 小时前
AI 时代,我为什么推荐用 cj-tauri 开发桌面应用
java·后端·python