The question, and all of the answers so far, are repeating the error message's mistake to not say which service account they are talking about. There are typically three service accounts:
There is the account which the Cloud Run Service will use at run time (when invoked). This error is not about it.
The error is for the Cloud build account which needs roles/run.builder. That's probably the Compute Engine default service account.
The deployment, eg. the gcloud
command, has to be logged in as someone. That may also be a service account. Whoever runs the command needs roles/run.developer
or roles/run.sourceDeveloper
The problem here is that too much of the documentation and some of the error messages don't say which account. Granting the correct permission to the wrong account doesn't help, which is probably the source of the comments saying "it doesn't work for me"