0

设置:

  1. 合并到主 codefresh 构建作业后,构建映像并将其推送到 docker 注册表
  2. Codefresh 测试运行作业拾取新图像并运行测试
  3. 在测试运行 CF 作业结束时,诱惑报告构建步骤运行

结果:仅当作业一直通过管道运行时,第 3 步才会在标题中显示消息失败 如果我手动重新运行作业,则可以正常运行(在这种情况下不执行第 1、2 步)

注意:手动添加该标签没有帮助

测试执行管道:

阶段:
  - “克隆”
  - “创造”
  - “跑”
  - “get_results”
  - “清理”

脚步:
  克隆:
      标题:“克隆存储库”
      类型:“git克隆”
      回购:“回购/回购”
      # CF_BRANCH 值在管道触发时自动设置
      修订:“${{CF_BRANCH}}”
      混帐:“github”
      阶段:“克隆”
  创造:
      标题:“在 aws 上启动 ec2 服务器”
      图片:中间层/aws-cli
      working_directory: "${{clone}}" # 在克隆代码的地方运行命令
      命令:
        - 导出 AWS_ACCESS_KEY_ID="${{AWS_ACCESS_KEY_ID}}"
        - 导出 AWS_SECRET_ACCESS_KEY="${{AWS_SECRET_ACCESS_KEY}}"
        - 导出 AWS_DEFAULT_REGION="${{AWS_REGION}}"
        - aws cloudformation create-stack --stack-name yourStackName --template-body file://cloudformation.yaml --parameters ParameterKey=keyName,ParameterValue=qaKeys
      阶段:“创造”
  跑:
        标题:“等待结果”
        图片:中间层/aws-cli
        working_directory: "${{clone}}" # 在克隆代码的地方运行命令
        命令:
          # 在 s3 中等待结果
          - APK更新
          - APK升级
          - apk 添加 bash
          - 导出 AWS_ACCESS_KEY_ID="${{AWS_ACCESS_KEY_ID}}"
          - 导出 AWS_SECRET_ACCESS_KEY="${{AWS_SECRET_ACCESS_KEY}}"
          - 导出 AWS_DEFAULT_REGION="${{AWS_REGION}}"
          - chmod +x ./wait-for-aws.sh
          - ./wait-for-aws.sh
          # 从 s3 复制结果 ojbects
          - aws s3 cp s3://${S3_BUCKETNAME}/ ./ --recursive
          - cp -r -f ./_result_/allure-raw $CF_VOLUME_PATH/allure-results
          - 猫测试结果.txt
        阶段:“运行”
  获取结果:
     标题:生成测试报告
     图片:codefresh/cf-docker-test-reporting
     标签:“${{CF_BRANCH_TAG_NORMALIZED}}”
     工作目录:'${{CF_VOLUME_PATH}}/'
     环境:
       - BUCKET_NAME=你的名字
       - CF_STORAGE_INTEGRATION=integrationName
     阶段:“get_results”
  清理:
           标题:“从 s3 中删除 cf 堆栈和文件”
           图片:中间层/aws-cli
           working_directory: "${{clone}}" # 在克隆代码的地方运行命令
           命令:
             # 在 s3 中等待结果
             - APK更新
             - APK升级
             - apk 添加 bash
             - 导出 AWS_ACCESS_KEY_ID="${{AWS_ACCESS_KEY_ID}}"
             - 导出 AWS_SECRET_ACCESS_KEY="${{AWS_SECRET_ACCESS_KEY}}"
             - 导出 AWS_DEFAULT_REGION="${{AWS_REGION}}"

             # 删除栈
             - aws cloudformation 删除堆栈 --stack-name 堆栈名称
             # 从 s3 中删除所有文件
             # - aws s3 rm s3://bucketName --recursive
           阶段:“clean_up”```
4

1 回答 1

0

在这种情况下,添加 CF_BRANCH_TAG_NORMALIZED 作为标签将无济于事。

CF_BRANCH_TAG_NORMALIZED 需要设置为此步骤的环境变量。

看一下codefresh/cf-docker-test-reporting的源码, https://github.com/codefresh-io/cf-docker-test-reporting/blob/master/config/index.js

env: {
            // bucketName - only bucket name, with out subdir path
            bucketName: ConfigUtils.getBucketName(),
            // bucketSubPath - parsed path to sub folder inside bucket
            bucketSubPath: ConfigUtils.getBucketSubPath(),
            // originBucketName - origin value that can contain subdir need to use it in some cases
            originBucketName: process.env.BUCKET_NAME,
            apiKey: process.env.CF_API_KEY,
            buildId: process.env.CF_BUILD_ID,
            volumePath: process.env.CF_VOLUME_PATH,
            branchNormalized: process.env.CF_BRANCH_TAG_NORMALIZED,
            storageIntegration: process.env.CF_STORAGE_INTEGRATION,
            logLevel: logLevelsMap[process.env.REPORT_LOGGING_LEVEL] || INFO,
            sourceReportFolderName: (allureDir || 'allure-results').trim(),
            reportDir: ((reportDir || '').trim()) || undefined,
            reportIndexFile: ((reportIndexFile || '').trim()) || undefined,
            reportWrapDir: _.isNumber(reportWrapDir) ? String(reportWrapDir) : '',
            reportType: _.isString(reportType) ? reportType.replace(/[<>]/g, 'hackDetected') : 'default',
            allureDir,
            clearTestReport
        },

您可以看到 CF_BRANCH_TAG_NORMALIZED 直接取自环境。

我的假设是,通常触发您的构建的任何东西都不会设置此环境变量。它通常在你有一个 git 触发器时自动设置,例如来自 Github。当您手动启动管道时,您可能会设置变量,这就是它运行的原因。

您应该检查通常如何触发管道以及是否设置了变量(自动或手动)。

以下是有关这些变量的更多文档: https ://codefresh.io/docs/docs/codefresh-yaml/variables/#system-provided-variables

于 2020-07-01T09:27:41.497 回答