.gitignoredatabuddy bundle deploy -s 会将变更直接提交到调度(生产环境),请确保已在流水线中配置审批保护。dev 和 prod 两个分支为例进行演示,分别对应开发环境和生产环境的 Target:分支 | 对应 Target | 用途 |
dev | dev | 开发集成,日常开发合入点 |
prod | prod | 生产环境,只接受 MR/PR 合入 |
dev 或 prod 分支触发对应环境的部署。cd my_bundlegit init
.gitignore 文件,排除本地状态目录:# DataBuddy CLI 状态目录(自动生成,包含绑定关系和本地状态,不应提交).bundle/
git add .git commit -m "chore: init bundle project"git remote add origin <你的仓库地址>git push -u origin dev
.bundle/ 目录包含本地绑定状态和认证缓存,必须 加入 .gitignore,不应提交到 Git 仓库。~/.databuddycfg 配置文件获取认证信息。变量名 | 说明 | 选项 |
WEDATA_HOST | DataBuddy Workspace 地址(完整 URL) | Masked |
WEDATA_SECRET_ID | 腾讯云 API 密钥 ID | Masked |
WEDATA_SECRET_KEY | 腾讯云 API 密钥 Key | Masked |
WEDATA_REGION | 地域,如 ap-beijing-fsi | — |
Secret 名称 | 说明 |
WEDATA_HOST | DataBuddy Workspace 地址(完整 URL) |
WEDATA_SECRET_ID | 腾讯云 API 密钥 ID |
WEDATA_SECRET_KEY | 腾讯云 API 密钥 Key |
WEDATA_REGION | 地域,如 ap-guangzhou |
.gitlab-ci.yml:stages:- validate- deploy# ---- 全局配置 ----variables:BUNDLE_DIR: my_bundle # 修改为实际的 bundle 目录名before_script:# 安装 DataBuddy CLI(Go 二进制版本)- curl 'https://wedata3-platform-bundle-cq-1257305158.cos.ap-chongqing.myqcloud.com/bundle_sh/install.sh' | sudo sh || true- databuddy --version# 写入认证配置文件(密钥从 CI/CD Variables 注入)- |cat << EOF > "$HOME/.databuddycfg"host = ${WEDATA_HOST}secret_id = ${WEDATA_SECRET_ID}secret_key = ${WEDATA_SECRET_KEY}region = ${WEDATA_REGION}EOF- cd ${BUNDLE_DIR}# ========== dev 分支:部署到开发环境 ==========validate-dev:stage: validatescript:- databuddy bundle validate -t devrules:- if: '$CI_COMMIT_BRANCH == "dev"'deploy-dev:stage: deployscript:- databuddy bundle deploy -t devrules:- if: '$CI_COMMIT_BRANCH == "dev"'environment:name: development# ========== prod 分支:部署到生产环境 ==========validate-prod:stage: validatescript:- databuddy bundle validate -t prodrules:- if: '$CI_COMMIT_BRANCH == "prod"'deploy-prod:stage: deployscript:- databuddy bundle deploy -t prod -srules:- if: '$CI_COMMIT_BRANCH == "prod"'environment:name: production
.github/workflows/deploy.yml:name: DataBuddy Bundle CI/CDon:push:branches: [dev, prod]pull_request:branches: [prod]env:BUNDLE_DIR: my_bundle # 修改为实际的 bundle 目录名jobs:# ========== dev 分支:部署到开发环境 ==========deploy-dev:if: github.ref == 'refs/heads/dev'runs-on: ubuntu-latestenvironment: developmentsteps:- uses: actions/checkout@v4- name: Install DataBuddy CLIrun: |curl 'https://wedata3-platform-bundle-cq-1257305158.cos.ap-chongqing.myqcloud.com/bundle_sh/install.sh' | sudo sh || truedatabuddy --version- name: Configure credentialsrun: |cat << EOF > "$HOME/.databuddycfg"host = ${{ secrets.WEDATA_HOST }}secret_id = ${{ secrets.WEDATA_SECRET_ID }}secret_key = ${{ secrets.WEDATA_SECRET_KEY }}region = ${{ secrets.WEDATA_REGION }}EOF- name: Validaterun: |cd ${{ env.BUNDLE_DIR }}databuddy bundle validate -t dev- name: Deployrun: |cd ${{ env.BUNDLE_DIR }}databuddy bundle deploy -t dev# ========== prod 分支:部署到生产环境 ==========deploy-prod:if: github.ref == 'refs/heads/prod'runs-on: ubuntu-latestenvironment: productionsteps:- uses: actions/checkout@v4- name: Install DataBuddy CLIrun: |curl 'https://wedata3-platform-bundle-cq-1257305158.cos.ap-chongqing.myqcloud.com/bundle_sh/install.sh' | sudo sh || truedatabuddy --version- name: Configure credentialsrun: |cat << EOF > "$HOME/.databuddycfg"host = ${{ secrets.WEDATA_HOST }}secret_id = ${{ secrets.WEDATA_SECRET_ID }}secret_key = ${{ secrets.WEDATA_SECRET_KEY }}region = ${{ secrets.WEDATA_REGION }}EOF- name: Validaterun: |cd ${{ env.BUNDLE_DIR }}databuddy bundle validate -t prod- name: Deployrun: |cd ${{ env.BUNDLE_DIR }}databuddy bundle deploy -t prod -s
production 环境配置 Required Reviewers,确保生产部署需要人工审批。git checkout devgit pull origin devgit checkout -b feature/add-report-task
# 本地校验databuddy bundle validate -t dev -p <profile># 提交代码git add .git commit -m "feat(tasks): add daily report task"git push origin feature/add-report-task
dev 分支。流水线自动执行 validate 和 deploy 到开发环境。dev 合入 prod,经 Code Review 通过后合入。流水线自动部署到生产环境。dev。dev 合入 prod,确认 deploy-prod 流水线执行成功。BUNDLE_DIR 变量与实际 Bundle 目录名一致。~/.databuddycfg 中的 host、secret_id、secret_key、region 四个字段均正确注入。databuddy.yml 中正确定义。git revert 撤回有问题的 commit。prod 分支。文档反馈