温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

AWS中怎么利用CodeBuild构建云端

发布时间:2021-08-12 16:44:47 来源:亿速云 阅读:128 作者:Leah 栏目:云计算

AWS中怎么利用CodeBuild构建云端,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

AWS 的权限体系建立在 IAM 角色的基础上,CodeBuild 也不例外。你需要指定 CodeBuild 的角色,并赋予相应的访问权限。

如:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Resource": "arn:aws:logs:*:*:*",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ]
        },
        {
            "Effect": "Allow",
            "Resource": [
                "arn:aws:codecommit:*:*:*"
            ],
            "Action": [
                "codecommit:GitPull"
            ]
        },
        {
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:*:*:*"
            ],
            "Action": [
                "s3:PutObject"
            ]
        }
    ]
}

这将允许向 CloudWatch Logs 创建日志组、日志流、写日志事件,允许从 CodeCommit 抓取源码,允许向 S3 写入对象。

根据你的需要,角色的权限也会不一样。

输入源

可以选择从 CodeCommit 代码仓库、S3 存储桶上的 zip 压缩包、GitHub 代码仓库之一作为输入源。

压缩包会被自动解压缩。输入的根目录即构建时的当前目录。

环境

CodeBuild 采用的是 Docker 镜像,具体请参考 CodeBuild 提供的 Docker 镜像。

外部提供的环境变量

外部提供的环境变量将会覆盖预配置的环境变量,生效顺序如下:

  1. 发起构建操作时提供的变量值

  2. 构建项目定义的变量值

  3. buildspec 文件中定义的变量值

不要以 CODEBUILD_ 开头命名环境变量,这个由 AWS 内部保留使用。

不要在环境变量中使用环境变量本身,如不能给 PATH 赋值 $PATH:/path,因为环境变量不会被展开,PATH 的值将为字面量 $PATH:/path。但可以使用其他替代符号,如给 PATH 赋值 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/tools:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools,因为在使用时它会被展开。

构建阶段(Parse)

一次 CodeBuild 构建的生命周期分为多个阶段:

  • SUBMITTED 构建请求已提交

  • ! PROVISIONING 准备构建环境

  • DOWNLOAD_SOURCE 下载输入源

  • * INSTALL 安装构建工具

  • * PRE_BUILD 构建前

  • * BUILD 构建

  • * POST_BUILD 构建后

  • ! UPLOAD_ARTIFACTS 上传构件

  • FINALIZING 最终确定

  • COMPLETED 已完成

其中 * 标示的可自定义,! 标示的可以配置。

如图所示:

AWS中怎么利用CodeBuild构建云端

buildspec 文件

buildspec 文件包含了一系列的配置和命令,用于处理输入,得到输出。该文件必须在输入的根目录,命名为 buildspec.yml,格式为 YAML。

version: 0.1

environment_variables:
  plaintext:
    key: "value"
    key: "value"     
phases:
  install:
    commands:
      - command
      - command
  pre_build:
    commands:
      - command
      - command
  build:
    commands:
      - command
      - command
  post_build:
    commands:
      - command
      - command
artifacts:
  files:
    - file # 当前目录(输入的根目录)下的文件
    - dir/file # 子目录下的文件
    - dir/* # 子目录下的所有文件
    - recursive-dir/**/* # 子目录下的所有文件夹和文件
  discard-paths: no

注意 YAML 格式的要求十分严格,谨慎检查你的语法,尤其是缩进。

environment_variables 指定了环境变量。

phases 指定了各个构建过程将要执行的命令。

artifacts 指定了要输出的文件(files),和是否放弃路径结构(discard-paths)。如果 discard-paths 为 yes 则所有来自子目录的文件将会被移到输出目录的根目录。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

aws
AI