gpt4 book ai didi

python - 自动构建可执行文件

转载 作者:行者123 更新时间:2023-12-05 04:25:09 24 4
gpt4 key购买 nike

我有一个我正在管理的 GUI 程序,是用 Python 编写的。为了不必担心环境,它作为使用 PyInstaller 构建的可执行文件分发。 .我可以从模块中定义为 MyModule.build() 的函数运行此构建(因为对我来说,与项目本身一起管理该脚本更有意义)。

我想在某种程度上使它自动化,这样当在 Gitlab 上添加新版本时,它可以由运行器构建并附加到版本。我目前采用的方法是实用的,但很老套:

我使用 Gitlab API 下载发布标签的源代码。我在运行器的环境中运行 python -m pip install -r {requirements_path}python -m pip install {source_path}。然后导入并运行 MyModule.build() 函数以生成可执行文件。然后使用 Gitlab API 上传并链接到版本。

很明显,中间部分是缺失的。类似项目的最佳方法是什么?包和要求是否可以安装在一个单独的 venv 中,而不是运行它的运行脚本?

最佳答案

一个工作流程是推送一个标签来创建您的版本。以下作业具有 rules: 配置,因此它们仅在标记管道上运行。

一个作业将构建可执行文件。另一个作业将使用第一个作业中创建的文件创建 GitLab 版本。

build:
rules:
- if: "$CI_COMMIT_TAG" # Only run when tags are pushed
image: python:3.9-slim
variables:
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
cache: # https://docs.gitlab.com/ee/ci/caching/#cache-python-dependencies
paths:
- .cache/pip
- venv/
script:
- python -m venv venv
- source venv/bin/activate
- python -m pip install -r requirements.txt # package requirements
- python -m pip install pyinstaller # build requirements
- pyinstaller --onefile --name myapp mypackage/__main__.py
artifacts:
paths:
- dist
create_release:
rules:
- if: "$CI_COMMIT_TAG"
needs: [build]
image: registry.gitlab.com/gitlab-org/release-cli:latest
script: # zip/upload your binary wherever it should be downloaded from
- echo "Uploading release!"
release: # create GitLab release
tag_name: $CI_COMMIT_TAG
name: 'Release of myapp version $CI_COMMIT_TAG'
description: 'Release created using the release-cli.'
assets: # link uploaded asset(s) to the release
- name: 'release-zip'
url: 'https://example.com/downloads/myapp/$CI_COMMIT_TAG/myapp.zip'

关于python - 自动构建可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73333965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com