python - 从管道中的 python 脚本更新 Gitlab 环境变量
问题描述
我正在尝试从 python 脚本更新 Gitlab 环境变量:
在 gitlab-ci.yml
gitlab_job:
stage: gitlab_stage
script:
- python set_myvar.py
- echo $MYVAR
在 set_myvar.py
import os
os.environ["MYVAR"] = my_value
我不需要变量持续存在。我只需要它以编程方式更新(来自python)。
到目前为止,它什么也没做。
解决方案
那是行不通的。UNIX 进程模型要求某些属性是进程私有的。这包括诸如进程的当前工作目录及其环境变量之类的东西。这些私有属性中的每一个都是继承的;隐式或显式取决于子进程如何由其父进程生成。子进程不能修改其父进程的那些私有属性。
有一些方法可以解决上述限制。例如,子进程可以将新var=value
对写入标准输出。然后,运行你的 python 程序的父进程可以读取这些字符串并将它们添加到它的环境中。在你的情况下,你的 python 程序会做print("MYVAR=my_value")
,你会从你的 gitlab 脚本中运行它作为eval $(python set_myvar.py)
.
推荐阅读
- python - 使用 python 代码自动注册付款会引发错误
- netbeans - 即使我添加了 primefaces 5.0 库,Neatbeans 说“没有为命名空间 http://primefaces.org.ui 找到库”的原因是什么?
- ubuntu - 如何在启动时运行“minikube start --vm-driver=none”
- spring-boot - 使用 JMX 自定义 Spring Boot 应用程序监控
- nestjs - `@Inject()`(没有 token 参数)是什么意思?
- go - 错误:ssh:握手失败:读取 tcp 读取:对等方重置连接
- ruby-on-rails - rails mongodb - 将字段类型从 Integer 更改为 BigDecimal
- wpf - ResourceDictionary 中的 WPF CollectionViewSource
- sql - 如何对我的表进行随机分类以进行学术研究
- android - Raspberry Pi 和 Android 应用程序之间的套接字连接无法重新连接