我試圖使用CodeDeploy將文件部署到安裝了Tomcat的AWS Beanstalk服務器。除了在appspec.yml調用我的.sh腳本和執行mvn install命令時發生的異常外,所有配置均已正確。我嘗試了所有我想象中的權限組合(以及我找到的每個StackOverflow答案),但沒有任何結果。AWS Linux CodeDeploy權限問題(w。Bitbucket,Tomcat,Shell腳本)
Cannot create resource output directory: /opt/codedeploy-agent/deployment-root/f953d455-9712-454b-84b0-2533cf87f79a/d-3UFCDLD0D/deployment-archive/target/classes
我還希望appspec.yml的文件部分在執行.sh腳本之前得到執行。它應該一直是這樣的:
- appspec.yml將所有文件夾的webapps
- build.sh被執行
- MVN運行,並創建.war文件
- build.sh做一些清理
appspec.yml(我試過其他多種)
version: 0.0
os: linux
files:
- source:/
destination: /var/lib/tomcat8/webapps
permissions:
- object: /opt/codedeploy-agent/deployment-root
pattern: "**"
owner: ec2-user
group: root
mode: 755
type:
- directory
- object: /var/lib/tomcat8/webapps
pattern: "**"
owner: ec2-user
group: root
mode: 755
type:
- directory
hooks:
BeforeInstall:
- location: scripts/build.sh
runas: ec2-user
build.sh
export LANG=en_US.UTF-8
SCRIPTPATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
echo "Script path: $SCRIPTPATH"
PROJECT_SOURCE_DIR=$SCRIPTPATH/../
cd $PROJECT_SOURCE_DIR
mvn clean install
cd $PROJECT_SOURCE_DIR/target
ls -a
for file in *.war; do
mv $file /usr/share/tomcat8/webapps/ROOT.war
done;
rm -rf $PROJECT_SOURCE_DIR/target
rm -rf $SCRIPTPATH
很明顯從Maven在嘗試創建一個文件夾目標而無需許可的除外。所以這些問題是爲什麼首先它試圖在這個文件夾中執行它,然後如何獲得適當的訪問權限。
我已經完成了所需的代碼修改。以root身份運行並將整個部署文件夾移動到.sh腳本內的tomcat,而不取決於appspec.yml。經過一些調整後,它實際運行良好。 – Galya