如何通过GitLab CI/CD YAML文件导入Airflow变量至JSON文件
在GitLab CI/CD中导入Airflow变量的实现方案
前提准备
- 在GitLab项目的Settings > CI/CD > Variables中配置Airflow访问凭据(设为保密变量避免泄露):
AIRFLOW_API_URL:Airflow实例的API根地址(示例:https://your-airflow-host.com/api/v1)AIRFLOW_USER:具备变量导入权限的Airflow用户名AIRFLOW_PASSWORD:对应用户密码
- 准备Airflow变量JSON文件(示例命名为
airflow_vars.json),放在项目根目录,格式如下:
{ "DB_CONNECTION_STRING": "postgresql://user:pass@db-host:5432/data_db", "EXTERNAL_API_KEY": "your-secret-api-key" }
方案1:基于Airflow CLI直接导入(适合已预装Airflow的Runner)
在.gitlab-ci.yml中添加如下Job:
import-airflow-variables: stage: deploy script: # 若Runner未预装Airflow,可添加安装命令(指定与你的Airflow实例匹配的版本) # pip install apache-airflow==2.8.0 # 配置Airflow连接参数 - export AIRFLOW__CORE__EXECUTOR=SequentialExecutor - export AIRFLOW__WEBSERVER__BASE_URL=$AIRFLOW_API_URL # Airflow 2.x需先获取API令牌 - airflow users export-token --username $AIRFLOW_USER --password $AIRFLOW_PASSWORD > airflow_token.txt - export AIRFLOW_API_AUTH=$(cat airflow_token.txt) # 执行变量导入 - airflow variables import airflow_vars.json only: - main # 按需指定触发分支
方案2:使用Airflow官方Docker镜像(无需在Runner预装Airflow)
若Runner支持Docker环境,直接用官方镜像执行命令更便捷:
import-airflow-variables: stage: deploy image: apache/airflow:2.8.0 # 指定与你的Airflow实例匹配的版本 script: # 配置Airflow连接参数 - export AIRFLOW__CORE__EXECUTOR=SequentialExecutor - export AIRFLOW__WEBSERVER__BASE_URL=$AIRFLOW_API_URL # 获取API令牌并导入变量 - airflow users export-token --username $AIRFLOW_USER --password $AIRFLOW_PASSWORD > airflow_token.txt - export AIRFLOW_API_AUTH=$(cat airflow_token.txt) - airflow variables import airflow_vars.json only: - main
常见问题排查
- 连接失败:检查
AIRFLOW_API_URL是否正确,确认GitLab Runner网络可访问Airflow实例(如同一VPC、防火墙规则放行) - 权限错误:确保Airflow用户拥有
Variables资源的编辑权限 - JSON格式错误:用
jq . airflow_vars.json命令验证文件语法,确保无格式问题
内容的提问来源于stack exchange,提问作者Rakesh Sabbani
相关产品推荐
相关产品推荐

