合并至main分支时触发Dataform的releaseConfig编译结果方案咨询
实现思路
1. 通过GitHub Actions触发合并事件
在你的GitHub仓库里创建一个Workflow配置文件,让代码合并到main分支时自动触发编译流程:
- 新建文件路径:
.github/workflows/dataform-compile.yml - 基础触发配置:
name: 触发Dataform ReleaseConfig编译 on: push: branches: [ main ] # 代码推送到main分支(包括合并PR后的推送)时触发 jobs: compile: runs-on: ubuntu-latest steps: # 后续认证和API调用步骤写在这里
2. 配置Google Cloud身份认证
调用Dataform API需要合法权限,用Google服务账号来实现:
- 在Google Cloud控制台创建服务账号,给它分配
dataform.compilationResults.create权限,导出JSON密钥 - 把这个JSON密钥内容添加到GitHub仓库的Secrets中,命名为
GOOGLE_SERVICE_ACCOUNT_KEY
3. 在Workflow里执行API调用
先完成身份认证,再调用Dataform API触发releaseConfig编译:
steps: - name: 认证到Google Cloud uses: google-github-actions/auth@v2 with: credentials_json: "${{ secrets.GOOGLE_SERVICE_ACCOUNT_KEY }}" - name: 获取访问令牌 id: get-token run: | TOKEN=$(gcloud auth print-access-token) echo "token=$TOKEN" >> $GITHUB_OUTPUT - name: 触发Dataform编译 run: | curl -X POST "https://dataform.googleapis.com/v1beta1/${{ secrets.DATAFORM_REPO_PATH }}/compilationResults" \ -H "Authorization: Bearer ${{ steps.get-token.outputs.token }}" \ -H "Content-Type: application/json" \ -d '{ "releaseConfig": "${{ secrets.DATAFORM_REPO_PATH }}/releaseConfigs/${{ secrets.RELEASE_CONFIG_NAME }}" }'
需要提前把DATAFORM_REPO_PATH(格式如projects/你的项目ID/locations/区域/repositories/仓库ID)和RELEASE_CONFIG_NAME添加到GitHub Secrets中,避免硬编码敏感信息。
4. 可选:校验编译结果
如果需要确认编译是否成功,可以在API调用后检查响应状态:
RESPONSE=$(curl -w "%{http_code}" -X POST "上面的API地址" -H "头信息" -d "请求体") HTTP_CODE=$(echo "$RESPONSE" | tail -n1) if [ "$HTTP_CODE" -ne 200 ]; then echo "编译失败,状态码:$HTTP_CODE" exit 1 fi
内容的提问来源于stack exchange,提问作者Chaouki
相关产品推荐
相关产品推荐

