J'essaie d'exécuter git dans AWS lambda pour effectuer une extraction d'un référentiel.
Ceci est ma configuration:
->
process.env['PATH'] = process.env['LAMBDA_TASK_ROOT'] + "/bin:" + process.env['PATH'];
Les variables d'entrée sont définies comme ceci:
"checkout_url": "git@...",
"branch":"master
Maintenant, je fais ceci (par souci de concision, j'ai mélangé du pseudo-code dans):
downloadDeploymentKeyFromS3Sync('/tmp/ssh_key');
fs.chmodSync("/tmp/ssh_key",0600);
process.env['GIT_SSH_COMMAND'] = 'ssh -o StrictHostKeyChecking=no -i /tmp/ssh_key';
execSync("git clone --depth=1 " + checkout_url + " --branch " + branch + " /tmp/checkout");
Lancer ceci dans mon ordinateur local en utilisant lambda-local tout fonctionne bien! Mais quand je le teste en lambda, je reçois:
warning: templates not found /usr/share/git-core/templates
PRIV_END: seteuid: Operation not permitted\r
fatal: Could not read from remote repository.
Oui, c'est tout à fait possible - vous pouvez le faire en créant votre propre bundle git tar et en annulant l'exécution Lambda.
C'est exactement ce que je fais dans LambCI .
Vous devrez vous assurer que les variables env suivantes sont définies aux emplacements appropriés:
GIT_TEMPLATE_DIR: '/tmp/myDir/usr/share/git-core/templates'
GIT_EXEC_PATH: '/tmp/myDir/usr/libexec/git-core'
Je vais créer un référentiel afin de mieux documenter (et rassembler des recettes) certaines des manières dont vous pouvez obtenir une exécution logicielle personnalisée sur AWS Lambda, mais pour l'instant, il existe simplement un problème .
Le problème est que vous ne pouvez pas copier uniquement le binaire git. Vous avez besoin d’une version portable de git et même avec cela, vous passerez un mauvais moment car vous ne pouvez pas garantir que la fonction sur laquelle la fonction lambda est exécutée va être compatible avec le binaire.
En reculant, je m'éloignerais complètement de cette approche. Je clonerais et construirais un paquet que je téléchargerais simplement à peu près de la même façon que vous téléchargez downloadeementmentKeyFromS3Sync.