如何在从Git(Bitbucket)通过AWS CodeDeploy部署后保留符号链接

时间:2017-02-16 11:08:07

标签: linux amazon-web-services amazon-ec2 symlink aws-code-deploy

我正在通过CodeDeploy工具从Bitbucket部署文件。部署到EC2实例后,符号链接变为空文件夹。有没有办法在部署后保留符号链接?

2 个答案:

答案 0 :(得分:6)

部署将在复制新文件之前清理目标文件夹。 您可以为appspecs.yml添加AfterInstall的挂钩以再次创建符号链接。

hooks:
    AfterInstall:
      - location: /deploy/AfterInstall.sh
        timeout: 3000
        runas: root

然后在文件AfterInstall.sh中添加命令以创建符号链接

#!/bin/bash
ln -s /path/to/file /path/to/symlink

答案 1 :(得分:1)

您可以将此代码放入部署中运行的脚本中:

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

基本上,这将在存储库中找到任何一个行文件,并针对每个文件检查它是否是另一个文件的路径(相对于符号链接文件所在的位置),然后重新创建符号链接。