如何在通过 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

本质上,这将在回购协议中找到任何一行文件,并为每个文件检查它是否是另一个文件的路径(相对于符号链接文件所在的位置)并重新创建符号链接。