0
votes

I want to create a Google Cloud Function using Terraform but want to pull the source code from Github.

I managed to do this zipping up the function and copying it into Cloud Storage using Terraform, but I do not like this workflow as I have to run a script to kick things off. I rather just do a PR on Github and see the new code in GCP.

I already setup Google Cloud Source Repositories to source from my Github.

The Terraform doc to use the "source_repository" argument is not clear to me. What I would like to do is just grab the source from HEAD on the master branch.

This function source code is located under the sub-folder:

cloud-functions/training_data

There are two files inside the function folder:

  • “main.py”
  • “requirements.txt”

I just would like to know how to specify the “source_repository” argument in this case.

2
Can you share the Terraform code with what you've tried so far?ydaetskcoR
Unfortunately I can't, working for Big Corp. I just need to understand the format of "source_repository".devguy
Can you produce a minimal reproducible example that doesn't include anything proprietary?ydaetskcoR
fine any solution?M-sAnNan

2 Answers

1
votes

I recently came across this problem as well.

The documentation says to format the url value to be, https://source.developers.google.com/projects/*/repos/*/moveable-aliases/*/paths/*

To get this to work...hypothetically, say my source code and my repository had the following information...

project: kalefive-project
repo: kalefive-functions-repository
branch: master
directory_in_repo_with_src: src/functions/bin

Then the resulting url that worked for me was...

source_repository = {
  url = https://source.developers.google.com/projects/kalefive-project/repos/kalefive-functions-repository/moveable-aliases/master/paths/src/functions/bin
}

Hope this helps!

0
votes
source_repository = {
  url = https://source.developers.google.com/projects/kalefive-project/repos/kalefive-functions-repository/moveable-aliases/master/paths/src/functions/bin
}

incase the above syntax is not working just use it without an equal sign.

resource "google_cloudfunctions_function" "js_function" {
    source_repository  {
      url = https://source.developers.google.com/projects/kalefive-project/repos/kalefive-functions-repository/moveable-aliases/master/paths/src/functions/bin
   }
}