如何在通过 AWS CodeDeploy 从 Git (Bitbucket) 部署后保留符号链接
How to keep symlinks after deploy via AWS CodeDeploy from Git (Bitbucket)
我正在通过 CodeDeploy 工具从 Bitbucket 部署文件。部署到 EC2 实例后,符号链接变为空文件夹。有没有办法在部署后保留符号链接?
部署将在复制新文件之前清理目标文件夹。
您可以为 AfterInstall
添加挂钩到 appspecs.yml
以再次创建符号链接。
hooks:
AfterInstall:
- location: /deploy/AfterInstall.sh
timeout: 3000
runas: root
然后在文件AfterInstall.sh
中添加创建符号链接的命令
#!/bin/bash
ln -s /path/to/file /path/to/symlink
您可以将此代码放入作为部署的一部分运行的脚本中:
files=$(find . -type f -exec awk 'END { if (NR == 1) print FILENAME }' {} \;)
for file in $files ; do
pushd $(dirname $file)
contents=$(cat $(basename $file))
if [ -f $contents ] ; then
rm $(basename $file)
ln -s $contents
fi
popd
done
本质上,这将在回购协议中找到任何一行文件,并为每个文件检查它是否是另一个文件的路径(相对于符号链接文件所在的位置)并重新创建符号链接。
我正在通过 CodeDeploy 工具从 Bitbucket 部署文件。部署到 EC2 实例后,符号链接变为空文件夹。有没有办法在部署后保留符号链接?
部署将在复制新文件之前清理目标文件夹。
您可以为 AfterInstall
添加挂钩到 appspecs.yml
以再次创建符号链接。
hooks:
AfterInstall:
- location: /deploy/AfterInstall.sh
timeout: 3000
runas: root
然后在文件AfterInstall.sh
中添加创建符号链接的命令
#!/bin/bash
ln -s /path/to/file /path/to/symlink
您可以将此代码放入作为部署的一部分运行的脚本中:
files=$(find . -type f -exec awk 'END { if (NR == 1) print FILENAME }' {} \;)
for file in $files ; do
pushd $(dirname $file)
contents=$(cat $(basename $file))
if [ -f $contents ] ; then
rm $(basename $file)
ln -s $contents
fi
popd
done
本质上,这将在回购协议中找到任何一行文件,并为每个文件检查它是否是另一个文件的路径(相对于符号链接文件所在的位置)并重新创建符号链接。