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中都要删除