Ich versuche, einen Build von einer lokalen Arbeitsstation aus zu übermitteln und erhalte einen nicht beschreibenden Fehler:
gcloud builds submit --config cloudbuild.yaml .
Creating temporary tarball archive of 149 file(s) totalling 121.5 MiB before compression.
Uploading tarball of [.] to [gs://***/source/1598211672.63-e76a3db01aa3435885a35cc3b94f0246.tgz]
ERROR: (gcloud.builds.submit) INVALID_ARGUMENT: Request contains an invalid argument.
Dasselbe cloudbuild.yaml
läuft korrekt, wenn es durch Git Push oder einen GitHub-PR-Kommentar ausgelöst wird. Außerdem konnte ich vor einigen Monaten auf diese Weise Builds übermitteln.
gcloud auth list
zeigt, dass ein aktives Konto definitiv die Rolle des Projektbesitzers hat. Darüber hinaus kann ich andere gcloud-Befehle ausführen, z. B. Storage-Bucket-Verwaltung, Compute-Instanzen-Verwaltung usw.
Antwort1
Dies funktioniert wie vorgesehen und ist dokumentiert.Hier:
Standardmäßig gibt der Build einen Fehler zurück, wenn eine Substitutionsvariable oder eine Substitution fehlt. Sie können jedoch die Option ALLOW_LOOSE festlegen, um diese Prüfung zu überspringen.
auch wenn Sie Ihren Build mit einem Trigger aufrufen:
Wenn Ihr Build durch einen Trigger aufgerufen wird, ist die Option ALLOW_LOOSE standardmäßig festgelegt. In diesem Fall gibt Ihr Build keinen Fehler zurück, wenn eine Substitutionsvariable oder eine Substitution fehlt. Sie können die Option ALLOW_LOOSE für Builds, die durch Trigger aufgerufen werden, nicht überschreiben.
Antwort2
Ich habe hinzugefügt
options:
substitution_option: 'ALLOW_LOOSE'
zu cloudbuild.yaml, und der Build wird jetzt übermittelt. Aus irgendeinem Grund, wenn cloudbuild.yaml definierte Ersetzungen wie diese hat:
substitutions:
_SLACK_MESSAGE_TEMPLATE: 'backend build succeeded"
cli cloudbuild submit gibt einen Fehler zurück, auch wenn ich es _SLACK_MESSAGE_TEMPLATE
über bereitstelle --substitutions
.