使用 Github 和 Cloud Source Repository 的 Terraform GCP Cloud 功能
Posted
技术标签:
【中文标题】使用 Github 和 Cloud Source Repository 的 Terraform GCP Cloud 功能【英文标题】:Terraform GCP Cloud function using Github and Cloud Source Repository 【发布时间】:2020-11-25 06:39:44 【问题描述】:我是 terraform 的新手,我想使用 Terraform 创建一个 Google Cloud Function,但想从 Github 提取源代码。
我设法做到这一点,压缩函数并使用 Terraform 将其复制到云存储中,但我不喜欢这个工作流程,因为我必须运行一个脚本才能开始。我宁愿只是在 Github 上做一个 PR,然后在 GCP 中查看新代码。
我已经将 Google Cloud Source Repositories 设置为从我的 Github 获取源代码。
我不清楚使用“source_repository”参数的 Terraform 文档。我想做的只是从 master 分支上的 HEAD 获取源代码。
我只是想知道在这种情况下如何指定“source_repository”参数。
我的云源存储库网址是https://source.cloud.google.com/projectName/github_offiecDomain_gitRepoName
我的云函数 terraform 脚本看起来像
resource "google_cloudfunctions_function" "js_function"
source_repository
url = "https://source.cloud.google.com/projectName/github_offiecDomain_gitRepoName"
当我terraform apply
它返回一个错误
google_cloudfunctions_function.js_function: Creating...
Error: googleapi: Error 400: The request has errors, badRequest
on main.tf line 89, in resource "google_cloudfunctions_function" "js_function":
89: resource "google_cloudfunctions_function" "js_function"
编辑将我的日志级别移动到跟踪
这就是我所拥有的
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5: ff
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5:
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5: "error":
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5: "code": 400,
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5: "message": "The request has errors",
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5: "errors": [
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5:
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5: "message": "The request has errors",
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5: "domain": "global",
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5: "reason": "badRequest"
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5:
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5: ],
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5: "status": "INVALID_ARGUMENT"
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5:
2020-08-05T11:07:30.722+0500 [DEBUG] plugin.terraform-provider-google_v3.17.0_x5:
我认为我的 URL 参数无效。任何线索我该如何写我的网址?
【问题讨论】:
你解决过这个问题吗?遇到同样的问题。 @LukasBatteau 有一个我们需要遵循的 url 模式。您不能直接复制并粘贴 url。在下面的 url source.developers.google.com/projects*/repos/*/moveable-aliases/*/paths/ 中用你自己的名字替换 '' 【参考方案1】:网址非常具体:
要引用可移动别名(分支):https://source.developers.google.com/projects/*/repos/*/moveable-aliases/*/paths/* 特别是,要引用 HEAD,请使用主可移动别名。
我误以为“可移动别名”是分支名称的占位符,但它实际上必须在路径中。
见https://cloud.google.com/functions/docs/reference/rest/v1/projects.locations.functions#SourceRepository
【讨论】:
【参考方案2】:没有直接从 GitHub 部署 Cloud Fuction 的选项。 但是,您可以 clone the repository 到 Google Cloud Source Repository,然后部署 Cloud Function from there
从错误中: 云函数有一些强制参数 像 entry_point 事件触发器
【讨论】:
【参考方案3】:Cloud Function 的 Terraform 脚本遗漏了导致 INVALID ARGUMENT 错误的等号,请尝试以下代码:
resource "google_cloudfunctions_function" "js_function"
source_repository =
url = "https://source.cloud.google.com/projectName/github_offiecDomain_gitRepoName"
另请注意, Terraform Official documentation 表示将 url 值格式化为 https://source.developers.google.com/projects/*/repos/*/moveable-aliases/*/paths/*
要使其工作,假设您的源代码和存储库具有以下信息:
project: "YOUR PROJECT NAME"
repo:"YOUR REPOSITORY"
branch: master
directory_in_repo_with_src: src/functions/bin
然后你需要把网址如下:
source_repository =
url = https://source.developers.google.com/projects/YOUR_PROJECT/repos/YOUR REPOSITORY/master/paths/src/functions/bin
如果它适合你,请告诉我。
【讨论】:
实际上等号不起作用,这就是我删除它的原因。它给出了一些格式错误 可能由于帖子中提到的 URL,您遇到了格式错误。你能把你的网址放在上面的格式吗?以上是关于使用 Github 和 Cloud Source Repository 的 Terraform GCP Cloud 功能的主要内容,如果未能解决你的问题,请参考以下文章
Google Cloud Platform:集成云源存储库和ReadTheDocs
如何使用SAP Cloud for Customer里的Data Source
通过服务帐号使用 Google Cloud Source Repositories
如何知道剩余/使用的 Google Cloud Source Repository 存储?