在我的机器人中gradle.properties我有以下内容:
android.enableAapt2=false
我gradle.properties位于~/.gradle/gradle.properties我的本地机器中.
我想知道如何添加android.enableAapt=false到我的yml文件.
我试图在全局下添加它但是没有工作没有错误但是robolectric如果你使用的话需要设置它gradle:3.0.0-beta3.
language: android
jdk: oraclejdk8
env:
  global:
    - ANDROID_TARGET=android-25
    - ANDROID_ABI=armeabi-v7a
    - android.enableAapt2=false
android:
  components:
  - tools
  - platform-tools
  - build-tools-25.0.3
  - android-25
  - extra-android-m2repository
  - sys-img-${ANDROID_ABI}-${ANDROID_TARGET}
licenses:
  - android-sdk-license-.+
  - '.+'
script:
    - ./gradlew --daemon build jacocoTestReport --info
after_success:
    - bash <(curl -s https://codecov.io/bash)
以下是travis-ci上的配置文件
{
  "language": "android",
  "jdk": "oraclejdk8",
  "android": {
    "components": [
      "tools",
      "platform-tools",
      "build-tools-25.0.3",
      "android-25",
      "extra-android-m2repository",
      "sys-img-${ANDROID_ABI}-${ANDROID_TARGET}"
    ]
  },
  "licenses": …continuous-integration android aapt continuous-delivery travis-ci
我们正在使用构建管道插件在Jenkins中建立一个持续交付管道.
我们的部署步骤使用专有的部署工具(由jenkins的HTTP请求触发),但是我们需要额外的Jenkins步骤来对当时部署的项目进行验收测试.因此,我们的部署工具将需要触发最后一个管道步骤.
jenkins为此设置很明显:
对于手动触发的下游构建步骤:添加将等待手动触发的构建步骤:
- 选择Build Pipeline Plugin,Manually Execute Downstream Project复选框
- 在"下游项目名称"字段中输入下游项目的名称.(nb可以使用逗号指定多个项目,例如"abc,def".)
来源:构建管道插件
问题是:我似乎找不到通过URL触发此下游构建的方法.
实际上我需要部署作业中的URL,因此我可以将其作为回调URL发送到部署工具.有人可以帮忙吗?
直到最近,我们的持续交付设置是使用以下命令提供Service Fabric软件包:
msbuild SFApp.sfproj /t:Package
这是必要的,因为目标包在解决方案级别不可用.即命令
msbuild SFSolution.sln /t:Package
失败,因为目标不存在.
随着我们的依赖关系网格的增长,如果没有解决方案文件,大多数接口项目将无法构建(解决"OutputPath不存在"的问题).根据这个答案,似乎有办法做到这一点.不幸的是,虽然目标像清洁工作......
msbuild SFSolution.sln /t:SFApplication:Clean
(…snip…)
Build succeeded.
    0 Warning(s)
    0 Error(s)
......目标套餐不会!
msbuild SFSolution.sln /t:SFApplication:Package
(…snip…)
Build FAILED.
"SFSolution.sln" (SFApplication:Package target) (1) -> SFSolution.sln.metaproj :
        error MSB4057: The target "SFApplication:Package" does not exist in the
        project. [SFSolution.sln]
    0 Warning(s)
    1 Error(s)
(为清楚起见,解决方案/项目文件夹/名称省略/更改.如有必要,我可以提供实际日志.)
所以问题是:我怎样才能使用命令行,使用Package目标和解决方案文件构建一个项目?
或者我如何从命令行打包Service Fabric应用程序?
msbuild continuous-integration continuous-delivery azure-service-fabric
我们正在使用SonarQube 5.5(迄今为止最新).
我们的项目包含许多遗留代码,这些代码无法通过我们所需的质量门,因此我们决定忽略已经存在的技术债务,但要严格对待新的变更.
因此,我们正在享受泄漏概念和默认质量门,仅考虑新的变化.
我们使用持续集成和持续交付,因此我们为每个CI构建运行SonarQube分析,以便能够立即向开发人员反馈他们的更改是否未通过质量门,因此问题不会留到sprint结束或累积新的技术债务.
我们将Leak Period设置为previous_version,因为我们每次运行都会增加版本号,但据我所知,在我们的情况下,它可以设置为previous_analysis并具有相同的效果.
这种方法的问题在于下一个好的提交将清除项目的状态(绿色,是红色),因为对最后一次提交的分析将通过质量门.虽然代码已包含先前提交中引入的问题.
如果将"泄漏期间"设置为固定日期\版本(自定义日期或A版本选项),则将对累积提交进行分析,并且单个"错误"提交可能会被忽视,从而导致周期后期出现问题.所以它不满足"直接"要求.想象一下,在一个固定的日期\版本之后,有5个相同大小的提交 - 4个来自"好"的开发人员跟随TDD所以100%覆盖率,1个来自"坏"的人,其变化覆盖率为0%.平均而言,它将通过默认条件"新代码的覆盖率不低于80%",但实际上我们希望尽快向这些"坏"人提供反馈,以便他们改进他们的实践.
如果将"泄漏期间"设置为滚动分析前的天数,则自上次"错误"提交后经过此天数后,门的状态将立即清除,而代码中仍可能存在问题.
我们需要能够分析单个提交(类似于SQ中的"previous_version"泄漏期选项).但是如果最后一次提交通过QG而前一次提交失败,我们应该一起分析它们以查看最后一次提交是否实际修复了前一次提交的问题,以便整个项目可以被视为已通过.
因此,实质上我们应该分析自上次成功分析以来的所有提交
泄漏期没有这样的选择.有没有其他方法来实现这一目标?
continuous-integration software-quality continuous-delivery sonarqube
我的团队开发了三个微服务.三者共同提供业务场景.他们与REST和RabbitMQ进行通信.看起来像Toby Clemson关于微服务测试的演讲.
每个微服务都有自己的连续交付管道.它们是交付,而不是部署管道,这意味着最终会有一个手动发布决策.
如何将业务场景(即所有微服务)的端到端测试纳入交付管道?
我的团队建议:
我们添加了一个共享的端到端阶段,该阶段部署了所有三个微服务并对它们运行端到端测试.每当其中一条管道到达此阶段时,它就会进行部署和测试.信号量确保管道一个接一个地通过阶段.失败会停止所有三个管道.
对我而言,这似乎牺牲了微服务架构首先获得的所有独立性:
端到端阶段是一个瓶颈.快速管道可以阻止缓慢的管道,因为它更频繁地保留端到端阶段,使其他人在可能进行测试之前等待.
一个管道中的故障将阻止其他管道交付,也禁止他们运送紧急错误修复.
该解决方案无法适应需要不同微服务组合的新业务场景.我们最终会得到一个连接所有微服务的超级阶段,或者每个业务场景都需要自己的新的端到端阶段.
端到端阶段只显示了一个狭窄的结果,因为它只确认了微服务版本的一个精确组合.如果生产包含不同的版本,则不保证这也会起作用.
该阶段也与最终的手动发布决策相冲突:如果构建通过端到端但我们决定不将其发布到生产中会怎么样?然后,生产将包含与端到端不同的微服务版本,从而导致扭曲的结果.
那么有什么更好的方法呢?
automated-tests ase end-to-end continuous-delivery microservices
有没有办法将现有的CodePipeline/CodeBuild项目导出到Cloudformation?
我正在将现有的CI/CD基础架构转换为代码,因此很容易在其他AWS区域上复制它们.
目前,我们已经通过浏览器中的AWS控制台完成了所有CodePipeline/CodeBuild项目,显然,这很乏味且容易出错.
continuous-integration amazon-web-services continuous-delivery aws-codepipeline aws-codebuild
我有 monorepo,我想根据已更改的目录内容运行子管道。在工作中prepare_config,我检查最新更改在哪里,创建子配置 yml,并在下一阶段的工作中run_child从 运行子管道。
问题是,如果model-gitlab-ci.yml不存在,则作业run_child会失败,而不是由于缺少工件而跳过。我搜索了仅在工件存在而不是失败时有条件运行作业的解决方案,但没有找到任何解决方案。也许这里有人有什么想法?
.gitlab-ci.yml:
stages:
  - .pre
  - build
prepare_config:
  stage: .pre
  tags:
    - sometag
  rules:
    - if: $CI_COMMIT_TAG == null
      when: always
      changes:
      - '.gitlab-ci.yml'
      - 'DIR_A/**/*'
      - 'DIR_B/**/*'
      - 'DIR_C/**/*'
  script:
    - |-
      files=$(git diff-tree --name-only --no-commit-id ${CI_MERGE_REQUEST_TARGET_BRANCH_SHA:-$CI_COMMIT_SHA})
      echo "Files changed: $files"
      for f in $files; do
        if [ -d $f ]; then
          sed "s/{{ MODEL_NAME }}/$f/g" .gitlab-ci-template.yml >> model-gitlab-ci.yml
        fi
      done
  artifacts:
    paths:
      - "model-gitlab-ci.yml"
run_child: …continuous-integration pipeline continuous-delivery gitlab gitlab-ci
使用触发器动态选择测试作业
prepare_test:
  image: $CI_REGISTRY/platform/docker-images/vault:1.8
  variables:
    CONTEXT_TEST: |
      include:
      # PRODUCT
        - project: 'gitlabci/integration-test'
          ref: dev_v2
          file: 
            - 'spark/.base_integration_test.yml'
            - 'spark/.base_integration_test_with_kafka.yml'   
      integration_test:
        variables:
          COVERAGE_SOURCE: "./src"  
    INTEGRATION_TEST: |
      $CONTEXT_TEST
        extends: .base_integration_test
    INTEGRATION_TEST_WITH_KAFKA: |
      $CONTEXT_TEST 
        extends: .base_integration_test_with_kafka  
  stage: prepare_test
  script:
    - export CICD_KAFKA_HOST=$(cat test/fixtures.py | grep KAFKA_HOST)
    - >
      if [ "$CICD_KAFKA_HOST" != "" ]; then
        export CICD_KAFKA_HOST="true"
        echo "$INTEGRATION_TEST_WITH_KAFKA" >> test.yml
      else
        export CICD_KAFKA_HOST="false"
        echo "$INTEGRATION_TEST" >> test.yml
      fi
    - env | sort -f
  artifacts:
    paths:
      - test.yml
    expire_in: 6000 seconds
# …我已经使用Flux v2设置了持续交付管道(因为 Flux v1 已弃用),并且运行良好。另一方面,我看到 Argo 和 Flux 在 2019 年底开始合并(请检查此链接)。
我想知道 Flux v2 是否是 Argo-Flux 合并的演变,或者它们是两个独立的 GitOps 实现选项。
我的印象是 Flux v2 非常活跃,所以我想它是一个真正的选择,并且至少会存在一段时间。但我对 Argo-Flux 不了解,也找不到太多信息。
谢谢!
continuous-deployment continuous-delivery argoproj fluxcd gitops