【问题标题】:How do I properly create buildspec.yml file for Laravel Application using AWS CodePipeline如何使用 AWS CodePipeline 为 Laravel 应用程序正确创建 buildspec.yml 文件
【发布时间】:2020-10-05 13:30:22
【问题描述】:

我第一次使用 AWS CodePipeline 并试图弄清楚如何为我的 Laravel 应用程序正确创建我的 buildspec.yml 文件。互联网上的资源很少。

我的 buildspec.yml 文件中目前有以下内容:

version: 0.2
phases:
 install:
   commands:
     - curl -s https://getcomposer.org/installer | php
     - mv  composer.phar /usr/local/bin/composer
     - php --version


 build:
   commands:
     - echo Build started on `date`
     - echo Installing composer deps
     - composer install
     - cp extra/.env ./
     - php artisan cache:clear

 post_build:
   commands:
     - echo Build completed on `date`
artifacts:
  type: zip
  files:
    - '**/*'
  name: clyde-$(date +%Y-%m-%d) 

CodeBuild 成功,并且确实部署到了 Elastic Beanstalk。我确实更改了 Elastic Beanstalk 中的配置,因此根目录是 /public(对于 Laravel)。但是,当我转到 URL 时,运行的第一行代码会出现如下错误:

未找到视图 [inc\navbar]。 (查看:/var/app/current/resources/views/layouts/app.blade.php)

这让我相信有些东西没有正确构建。

【问题讨论】:

  • 最后不应该有一个artifacs 部分吗?
  • 我确实编辑了上面的问题。我不确定如何格式化工件部分
  • 我不知道 laravel 的具体情况,但如果您希望所有文件都被视为工件,请使用 **/*。在我之前提供的链接中,您可以找到支持的文件模式。

标签: laravel amazon-web-services


【解决方案1】:

要使其工作,需要使用完整的管道:CodeCommit-->CodeBuild-->CodeDeploy

在您的 Artifact 存储桶中,将在此过程中生成两个对象:

  • s3://codepipeline-us-east-1-/SourceArtif/
  • s3://codepipeline-us-east-1-/BuildArtif/

第一个是在管道的初始阶段从 CodeCommit 获得的。

第二个是由 CodeBuild 创建的。生成的 zip 文件将与 CodeCommit 中的文件完全相同。看起来,CodeBuild 只是在测试,而不是使用 buildspec.yml 中指定的指令的结果保存工件。

第三阶段,CodeDeploy会从Artifact获取代码,需要通过appspec.yml引用的脚本再次Build。

version: 0.0
os: linux
files:
  - source: /
    destination: /web/project/html
hooks:
  BeforeInstall:
    - location: scripts/install_dependencies.sh
      timeout: 300
      runas: root
  AfterInstall:
    - location: scripts/build_again.sh
      timeout: 600
      runas: user
  ApplicationStart:
    - location: scripts/start_application.sh
      timeout: 300
      runas: root

build_again.sh 文件将需要包含您在 buildspec.yml(构建部分)中使用的相同命令,然后您的 Laravel 项目应该可以工作。

【讨论】:

    猜你喜欢
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 2021-02-22
    • 2022-07-22
    • 2018-02-04
    • 2017-08-20
    相关资源
    最近更新 更多