Codebuild-构建项目简单的Hello World

时间:2019-08-30 03:48:20

标签: amazon-web-services amazon-s3 amazon-ec2 aws-lambda aws-codebuild

我正在尝试在AWS Codebuild上构建一个简单的hello世界,但是我无法使buildspec.yml正常工作...我只想在文件夹中放入带有一些CSS的简单html。而已。

这是我尝试构建的repo

如果您向里看,.yml具有以下内容:

version: 0.2

run-as: ec2-user

phases:
  install:
    run-as: ec2-user
    runtime-versions:
      nodejs: 10

artifacts:
  files:
    - /index.html
  name: artifact-name
    - source: /
      destination: /var/www/html
#  base-directory: /var/www/html/

Thisthis.yml的文档,但我不知道该写什么,它不是java,不是python,而只是一个html。 / p>

编辑:我忘了输入错误: YAML_FILE_ERROR: mapping values are not allowed in this context at line 14

EDIT2: 这就是我的buildspec.yml

buildspec.yml

这就是我的环境(我正在使用自己的ec2实例的代码部署和管道,这有问题吗?)

环境: enter image description here enter image description here

最终编辑:

问题在于图像!将其更改为Ubuntu版本1.0

2 个答案:

答案 0 :(得分:3)

您需要构建一个CodePipeline,该代码应具有:

  1. 来源:可能是Github,代码将从此处检出。
  2. CodeBuild :它将构建您的工件并将其上传到S3存储桶,以便在部署时可以使用它。
  3. CodeDeploy :它将从S3存储桶中提取代码,并在您创建的Deployment Group上进行部署。

为代码构建创建buildspec.yml并将其放在根目录中。同样,为codedeploy创建appspec.yml并将其放在根目录中。

样本buildspec.yml

version: 0.2

phases:
  pre_build:
   commands:
       - echo "creating <path-to-folder> folder"
       - mkdir -p ./<path-to-folder>/
  build:
    commands:
        - echo "Copying the file"
        - cp index.html ./<path-to-folder>/
artifacts:
   files:
      - <path-to-folder>/**/*
      - appspec.yml

buildspec.yml将创建一个文件夹,并将您的index.html复制到该文件夹​​中并将其放在S3上。

sample appspec.yml

version: 0.0
os: linux
files:
  - source: <path-to-folder>/index.html
    destination: /var/www/html/
hooks:
  BeforeInstall:
    - location: <location-of-script-you-want-to-run>
      timeout: 300
      runas: root
    - location: <location-of-script-you-want-to-run>
      timeout: 300
      runas: root
  ApplicationStop:
    - location: <location-of-script-you-want-to-run>
      timeout: 300
      runas: root

appspec.yml将从S3下载工件,并将文件从文件夹复制到/ var / www / html /,并且您可以提供其他脚本来启动或停止服务。

答案 1 :(得分:1)

请从index.html中删除斜杠。另外,您可以尝试将工件块更新为以下内容吗?

version: 0.2

run-as: ec2-user

phases:
  install:
    run-as: ec2-user
    runtime-versions:
      nodejs: 10

artifacts:
  files:
    - index.html

默认情况下,CodeBuild使用源输入的根文件夹。如果需要,可以这样指定:

artifacts:
  files:
    - location
    - location
  name: artifact-name
  discard-paths: yes
  base-directory: location        # Look here

此外,您似乎还混合了来自appspec.yml的语法,这完全是另一种野兽。无需在buildspec.yml中指定destination