Using pubsub to trigger subsequent cloud build with filtering

696 views
Skip to first unread message

Tom Harris

unread,
Jun 2, 2022, 8:52:19 PM6/2/22
to Google App Engine

I have one cloud build trigger in one of our projects that deploys an App Engine. I have also created a pubsub topic named 'cloud-builds' in this same project, and I see that build event messages are being sent to that topic during and at the end of builds.

I am attempting to use this topic in another project with a pubsub cloud build trigger. This works, but has no filtering, and as described on this page, its firing the build way too often:


Now, all I need to determine how to do is add the filtering so only successful builds with the right trigger ID are used. The documentation (https://cloud.google.com/build/docs/automating-builds/create-pubsub-triggers#using_cel_to_filter_build_events) says to add something like this to my cloud build trigger filter:

filter: build.build_trigger_id == "redacted" && build.status == Build.Status.SUCCESS

However, I am never able to save my trigger, as whatever I type into the filter fails syntax validation. All the examples given on that page fail. I have not been able to find any examples on the net, either. I have tried subsets of these, exactly as described in the documentation, and they all fail with syntax errors.

How is this supposed to be entered into the cloud build trigger filter? We cannot have every one of the pubsub messages firing a build, as I saw at least 15 messages delivered when there was no filter, triggering 15 builds in quick succession, most of which failed due to app engine deployment concurrency.

Please, need some assistance. Also, better documentation around this area would be good.

Many thanks,
Tom Harris


Tom Harris

unread,
Jun 3, 2022, 3:45:49 PM6/3/22
to Google App Engine

To be 100% explicit, I am adding the following into the Filters section of my Cloud Build Trigger, within the "Filter Editor" tab, as the first tab doesn't let me select anything useful from the build pub/sub message. This is right from the documentation.

filter: build.status == Build.Status.SUCCESS

And when I try to save my trigger, I receive this error at the bottom of the page:

Failed to update trigger: generic::invalid_argument: ERROR: <input>:1:7: Syntax error: mismatched input ':' expecting <EOF> | filter: build.status == Build.Status.SUCCESS | ......^

I also tried removing "filter: " as it seems redundant to have that, but that also fails with an error:

Failed to update trigger: generic::invalid_argument: ERROR: <input>:1:1: undeclared reference to 'build' (in container '') | build.status == Build.Status.SUCCESS | ^ ERROR: <input>:1:17: undeclared reference to 'Build' (in container '') | build.status == Build.Status.SUCCESS | ................^

Nothing I have tried seems to be valid in this and the documentation link right there in the trigger editor UI is exactly the documentation giving the examples.
cloud-build-trigger-filters-error.png

I've been working at this for a few days, and I'm out of ideas for making this function as documented. Please, some assistance is needed.

Thanks.

Jose Perez Sanchez

unread,
Jun 6, 2022, 1:12:17 PM6/6/22
to Google App Engine

According to the error message, certain variables aren't sufficiently defined. 

Could you please check your IAM allocated roles? You should be something close to an "admin." It appears to be a rights-related error.

Under Cloud Build, look at the Logging sections. Whether there isn't anything, you could try editing the trigger with the API to see if it also fails. It might provide further information about the real error.

Identity requirements To update Cloud Build triggers, you'll need the permission cloudbuild.build.create.

You can also try disabling and enabling the Cloud Build API in your project so a new service account is created, or adding the role “App Engine Deployer” to the cloud build service account, then try to deploy again.

Reply all
Reply to author
Forward
0 new messages