2015-10-23 5 views
10

Ich versuche, das Skript 'AfterInstall' in der AWS-Code-Implementierung auszuführen, aber es wird anstelle des Anwendungsverzeichnisses aus dem Verzeichnis/opt/codedeploy-agent/dir ausgeführt.AWS CodeDeploy Das Nachinstallations-Skript wird vom Code-Deploy-Agent-Verzeichnis ausgeführt

Dies ist, wie appspec.yml Datei wie folgt aussieht:

version: 0.0 

os: linux 

files: 
    - source:/
    destination: /tmp/epub 

hooks: 
    AfterInstall: 
    - location: server/install-packages.sh 
     runas: root 

Wie Sie es ist ein einfaches Beispiel sehen.

Jetzt sieht der Bash-Skript, das wie:

#!/bin/bash 
npm install 

Ich mag nur NPM installieren und das ist es.

leider den Fehler Ich erhalte:

LifecycleEvent - AfterInstall 
Script - server/install-packages.sh 
[stderr]npm ERR! install Couldn't read dependencies 
[stderr]npm ERR! Linux 3.13.0-48-generic 
[stderr]npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install" 
[stderr]npm ERR! node v4.2.1 
[stderr]npm ERR! npm v2.14.7 
[stderr]npm ERR! path /opt/codedeploy-agent/package.json 
[stderr]npm ERR! code ENOPACKAGEJSON 
[stderr]npm ERR! errno -2 
[stderr]npm ERR! syscall open 
[stderr] 
[stderr]npm ERR! package.json ENOENT: no such file or directory, open '/opt/codedeploy-agent/package.json' 
[stderr]npm ERR! package.json This is most likely not a problem with npm itself. 
[stderr]npm ERR! package.json npm can't find a package.json file in your current directory. 
[stderr] 
[stderr]npm ERR! Please include the following file with any support request: 
[stderr]npm ERR!  /opt/codedeploy-agent/npm-debug.log 

Ich habe versucht, verschiedene appspec.yml configs wie runas das Hinzufügen oder „/“ am Anfang des Standortpfad hinzufügen. Die ganze Zeit versucht es von/opt/codedeoploy-agent/directory zu laufen.

In ihrer Verzweiflung habe ich absoluten Pfad zum Skript gesetzt, aber dann bekam ich:

Script does not exist at specified location: /tmp/epub/server/install-packages.sh 

Es ist wirklich ärgerlich, da ich alles tue docs nach, aber wahrscheinlich etwas fehle ich sehr sehr klein !

Dank

Antwort

20

Ok,

Also habe ich herausgefunden habe, dass codedeoloy-Agent läuft Afterinstall (und wahrscheinlich alle anderen Schritte) aus dem temporären Verzeichnis durch den Agenten erstellte Instanz auf bereitstellen, so In meinem Fall musste ich das Bash-Skript ändern, indem ich in das richtige Verzeichnis cd-ging:

+0

Wo haben Sie das herausgefunden? – artburkart

+2

Ich kann mich nicht erinnern, ob ich es von hier abgeschlossen habe: http://docs.aws.amazon.com/codedeploy/latest/userguide/app-spec-ref.html#app-spec-ref-hooks - vielleicht gibt es ein Satz suggeriert, dass - ich erinnere mich, dass es eine Weile gedauert hat - oder eher durch Versuche und Irrtümer, oder eine Kombination aus beidem :) – matewilk

+0

@matewilk - super hilfreich! – Ben

Verwandte Themen