是否有通过GitLab CI迁移Hasura迁移文件与元数据的模板?
GitLab CI 迁移Hasura数据库Schema与元数据配置参考
首先你需要先在本地用Hasura CLI初始化项目,生成对应的Schema迁移文件与元数据文件,并提交到GitLab仓库。之后在GitLab项目的「设置- CI/CD -变量」中添加以下加密变量:
- HASURA_GRAPHQL_ENDPOINT:你的Hasura实例访问地址
- HASURA_GRAPHQL_ADMIN_SECRET:Hasura实例的管理员密钥
- HASURA_PROJECT_DIR:仓库中Hasura项目文件所在的目录,若存放在根目录可留空
.gitlab-ci.yml 模板
# 使用官方Hasura CLI镜像,版本需和你的Hasura服务版本保持一致 image: hasura/graphql-cli:v2.37.0 stages: - validate - deploy # 配置校验任务,仅在合并请求、非主分支提交时运行 validate-hasura-config: stage: validate script: - cd ${HASURA_PROJECT_DIR:-.} # 校验迁移文件合法性 - hasura migrate status --endpoint "$HASURA_GRAPHQL_ENDPOINT" --admin-secret "$HASURA_GRAPHQL_ADMIN_SECRET" # 校验元数据合法性 - hasura metadata validate --endpoint "$HASURA_GRAPHQL_ENDPOINT" --admin-secret "$HASURA_GRAPHQL_ADMIN_SECRET" rules: - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH - if: $CI_PIPELINE_SOURCE == "merge_request_event" # 部署任务,仅在主分支提交时运行,可添加when: manual改为手动触发 deploy-hasura: stage: deploy script: - cd ${HASURA_PROJECT_DIR:-.} # 应用Schema迁移 - hasura migrate apply --endpoint "$HASURA_GRAPHQL_ENDPOINT" --admin-secret "$HASURA_GRAPHQL_ADMIN_SECRET" # 应用元数据 - hasura metadata apply --endpoint "$HASURA_GRAPHQL_ENDPOINT" --admin-secret "$HASURA_GRAPHQL_ADMIN_SECRET" # 重载元数据确保配置生效 - hasura metadata reload --endpoint "$HASURA_GRAPHQL_ENDPOINT" --admin-secret "$HASURA_GRAPHQL_ADMIN_SECRET" rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # 去掉下面的注释即可改为手动触发部署 # when: manual allow_failure: false
注意事项
- 必须保证Hasura CLI镜像版本和你线上运行的Hasura服务版本一致,否则会出现兼容性问题导致迁移失败
- 迁移执行顺序固定为「Schema迁移→元数据应用→元数据重载」,避免元数据引用未创建的数据库资源导致报错
- 生产环境建议开启部署任务的手动触发规则,避免提交代码后自动执行变更引发线上故障
- 若需要回滚,可在CI任务中额外添加
hasura migrate rollback相关命令,按需指定回滚版本即可
内容的提问来源于stack exchange,提问作者Jason M.
相关产品推荐
相关产品推荐

