j'utilise cloudbuild.yml file
.
J'essaie de récupérer la sortie de la génération à l'intérieur de la génération du cloud et de la transférer dans un fichier. Voici à quoi ressemble ma démarche :
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk:slim'
args: ['gcloud', 'builds', 'log', '$BUILD_ID', '>buildlog.log']
id: 'fetch-build-log'
Cela me renvoie une erreur en disant ERROR: (gcloud.builds.log) unrecognized arguments: >buildlog.log
Si j'exécute cette commande dans cloud shell
, cela fonctionne bien :gcloud builds log xxxxx-xxxx-xxxx-xxxx-xxxxxxx >guildlog.log
Je ne sais pas pourquoi cloud build
considère >buildlog.log
un argument lorsqu'il s'agit de rediriger la sortie vers le fichier.
Est-ce que j'ai raté quelque chose ici ou y a-t-il une autre façon de le faire?
Dans Cloud Build, chaque générateur a un point d'entrée par défaut, qui correspond généralement à l'objectif de ce générateur.
Dans votre exemple, vous utilisez cloud-sdk
le point d'entrée par défaut et la syntaxe des arguments positionnels, donc chaque index doit être un argument unique.
C'est pourquoi vous recevez l'erreur : ERROR: (gcloud.builds.log) unrecognized arguments: >buildlog.log
J'ai mis en place un exemple de travail en changeant le point d'entrée en/bin/bash
:
steps:
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk:slim'
entrypoint: '/bin/bash'
args: ['-c',
'gcloud builds log $BUILD_ID > buildlog.log']
id: 'fetch-build-log'
- name: 'alpine'
id: 'OUTPUT_LOG'
args: ['sh',
'-c',
'cat /workspace/buildlog.log']
Dans cet exemple, j'utilise la -c
commande, au cas où vous voudriez comprendre pourquoi :
Citation de man bash
:
-c string If the -c option is present, then commands are read from
string. If there are arguments after the string, they are
assigned to the positional parameters, starting with $0.
Dites-moi si cela marche pour vous.
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots