第 2 步:创建示例应用程序修订 - Amazon CodeDeploy
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

第 2 步:创建示例应用程序修订

在这一步中,您将创建要部署到本地实例的示例应用程序修订。

由于很难知道哪些软件和功能已经安装 — 或允许您组织的策略安装 — 在本地实例上,我们提供的示例应用程序修订只使用批处理脚本 (适用于 Windows Server) 或外壳脚本 (适用于 Ubuntu 服务器和 RHEL)将文本文件写入到本地实例上的位置。对于多个 CodeDeploy 部署生命周期事件(包括安装AfterInstallApplicationStart, 和ValidateService。在 BeforeInstall 部署生命周期事件中,将运行一个脚本来删除此示例在先前部署中写入的旧文件,并在您的本地实例上创建一个位置用于写入新文件。

注意

如果出现以下任何情况,此示例应用程序修订可能无法部署:

  • 在本地实例上启动 CodeDeploy 代理的用户帐户无权执行脚本。

  • 用户账户无权在脚本中列出的位置创建或删除文件夹。

  • 用户账户无权在脚本中列出的位置创建文本文件。

  1. 在您的开发计算机上,创建名为 CodeDeployDemo-OnPrem 的子目录 (子文件夹) 来存储示例应用程序修订的文件,然后切换到该子文件夹。在此示例中,我们假设您将使用c:\temp文件夹作为 Windows 服务器的根文件夹或/tmp文件夹作为 Ubuntu 服务器和 RHEL 的根文件夹。如果您使用其他文件夹,请务必在整个教程中使用该文件夹取代我们提供的文件夹:

    对于 Windows:

    mkdir c:\temp\CodeDeployDemo-OnPrem cd c:\temp\CodeDeployDemo-OnPrem

    对于 Linux、macOS 或 Unix:

    mkdir /tmp/CodeDeployDemo-OnPrem cd /tmp/CodeDeployDemo-OnPrem
  2. CodeDeployDemo-OnPrem 子文件夹的根中,使用文本编辑器创建两个分别名为 appspec.ymlinstall.txt 的文件:

    appspec.yml适用于 Windows Server 的:

    version: 0.0 os: windows files: - source: .\install.txt destination: c:\temp\CodeDeployExample hooks: BeforeInstall: - location: .\scripts\before-install.bat timeout: 900 AfterInstall: - location: .\scripts\after-install.bat timeout: 900 ApplicationStart: - location: .\scripts\application-start.bat timeout: 900 ValidateService: - location: .\scripts\validate-service.bat timeout: 900

    appspec.yml对于 Ubuntu 服务器和 RHEL:

    version: 0.0 os: linux files: - source: ./install.txt destination: /tmp/CodeDeployExample hooks: BeforeInstall: - location: ./scripts/before-install.sh timeout: 900 AfterInstall: - location: ./scripts/after-install.sh timeout: 900 ApplicationStart: - location: ./scripts/application-start.sh timeout: 900 ValidateService: - location: ./scripts/validate-service.sh timeout: 900

    有关 AppSpec 文件的更多信息,请参阅将应用程序规范文件添加到 CodeDeploy 的修订版CodeDeploy AppSpec 文件参考

    install.txt:

    The Install deployment lifecycle event successfully completed.
  3. CodeDeployDemo-OnPrem 子文件夹的根下,创建 scripts 子文件夹,然后切换到该子文件夹:

    对于 Windows:

    mkdir c:\temp\CodeDeployDemo-OnPrem\scripts cd c:\temp\CodeDeployDemo-OnPrem\scripts

    对于 Linux、macOS 或 Unix:

    mkdir -p /tmp/CodeDeployDemo-OnPrem/scripts cd /tmp/CodeDeployDemo-OnPrem/scripts
  4. scripts子文件夹中,使用文本编辑器创建四个名为before-install.batafter-install.batapplication-start.bat, 和validate-service.bat对于 Windows Server,或者before-install.shafter-install.shapplication-start.sh, 和validate-service.sh对于 Ubuntu 服务器和 RHEL:

    对于 Windows Server:

    before-install.bat:

    set FOLDER=%HOMEDRIVE%\temp\CodeDeployExample if exist %FOLDER% ( rd /s /q "%FOLDER%" ) mkdir %FOLDER%

    after-install.bat:

    cd %HOMEDRIVE%\temp\CodeDeployExample echo The AfterInstall deployment lifecycle event successfully completed. > after-install.txt

    application-start.bat:

    cd %HOMEDRIVE%\temp\CodeDeployExample echo The ApplicationStart deployment lifecycle event successfully completed. > application-start.txt

    validate-service.bat:

    cd %HOMEDRIVE%\temp\CodeDeployExample echo The ValidateService deployment lifecycle event successfully completed. > validate-service.txt

    对于 Ubuntu Server 和 RHEL:

    before-install.sh:

    #!/bin/bash export FOLDER=/tmp/CodeDeployExample if [ -d $FOLDER ] then rm -rf $FOLDER fi mkdir -p $FOLDER

    after-install.sh:

    #!/bin/bash cd /tmp/CodeDeployExample echo "The AfterInstall deployment lifecycle event successfully completed." > after-install.txt

    application-start.sh:

    #!/bin/bash cd /tmp/CodeDeployExample echo "The ApplicationStart deployment lifecycle event successfully completed." > application-start.txt

    validate-service.sh:

    #!/bin/bash cd /tmp/CodeDeployExample echo "The ValidateService deployment lifecycle event successfully completed." > validate-service.txt unset FOLDER
  5. 仅对于 Ubuntu Server 和 RHEL,请确保四个 shell 脚本都具有执行权限:

    chmod +x ./scripts/*