gpt4 book ai didi

amazon-web-services - 使用AWS CodeBuild的语义版本控制

转载 作者:行者123 更新时间:2023-12-04 04:33:23 26 4
gpt4 key购买 nike

目前,我的团队正在使用Jenkins来管理我们的CI/CD工作流程。由于我们的基础架构完全在AWS中,因此我一直在考虑迁移到AWS CodePipeline/CodeBuild进行管理。

在当前状态下,我们正在对工件进行版本化,例如<major>.<minor>.<patch>-<jenkins build #>,即1.1.1-987。但是,CodeBuild似乎没有任何内部版本号的概念。由于工件像<bucket>/<version>/<artifact>一样存储在s3中,我真的很讨厌失去这种版本控制方法。

CodeBuild确实提供了一些env变量,我可以在这里看到它们:http://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref.html#build-env-ref-env-vars

但是从可用的东西来看,尝试使用构建ID或其他任何东西似乎很愚蠢。

CodeBuild是否有任何可用的支持增量构建的代码?还是有一种AWS建议的语义版本控制方法?搜索此主题返回的结果非常低

任何帮助或建议,不胜感激

最佳答案

使用日期的建议在我们的用例中并没有真正起作用。我们最终在SSM中创建了一个基本版本,并创建了一个在buildspec中运行的脚本,该脚本将版本抓取,递增并更新回SSM。这很容易做到:

  • 在SSM中以[NAME]的身份创建String/SecureString。例如,说“BUILD_VERSION”。该值应在[MAJOR.MINOR.PATCH]或[MAJOR.PATCH]中。
  • 创建一个shell脚本。以下示例应作为基本模板,您必须根据需要对其进行修改:
  • #!/bin/bash
    if [ "$1" = 'next' ]; then
    version=$(aws ssm get-parameter --name "BUILD_VERSION" --region 'us-east-1' --with-decryption | sed -n -e 's/.*Value\"[^\"]*//p' | sed -n -e 's/[\"\,]//gp')
    majorminor=$(printf $version | grep -o ^[0-9]*\\.[0-9]*\. | tr -d '\n')
    patch=$(printf $version | grep -o [0-9]*$ | tr -d '\n')
    patch=$(($patch+1))
    silent=$(aws ssm put-parameter --name "BUILD_VERSION" --value "$majorminor$patch" --type "SecureString" --overwrite)
    echo "$majorminor$patch"
    fi
  • 从buildspec中调用版本控制脚本,并根据需要使用输出。
  • 关于amazon-web-services - 使用AWS CodeBuild的语义版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45258447/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com