标签: continuous-delivery

在微服务中,为数据库迁移脚本和 API 代码建立单独的代码存储库是否有意义?

根据有界上下文,我们已经确定了两个微服务实现,我们分别调用它们Service AService B。每个微服务都有不同的存储库(由于单一职责和更好的所有权的好处)。现在,每个存储库都使用自己的数据库架构(选择是为了更好地分离持久性并减少数据库实例的维护)。

之前,我们将数据库迁移脚本(用于持续交付)提取到单独的单个存储库(包含 和Service A模式Service B的脚本)中,并在 CI 下的单个作业下运行它们。现在,当我们处理更多的故事时,我们开始面临一些挑战,其中一些挑战如下:

  • 对单个模式的更改会触发整个数据库的构建,从而触发所有微服务的下游,从而增加我们的反馈时间
  • 我们通常无法实现true持续交付,因为架构更改也需要相应的代码更改Service,因此部署两个PR时都需要谨慎
  • 此外,还有一些公共表Users需要由两个模式使用,这些表目前正在两个模式之间复制。

所以我的问题/疑问是:

  • 我们是否应该根据模式分离数据库迁移存储库,就像服务一样。
  • 我们是否应该为数据库迁移脚本建立单独的存储库?我们应该将它们合并到各自的Service存储库代码中吗?
  • 我们是否应该进一步提取通用表a level up并筹集Domain Events资金Eventual Consistency

任何指示/建议都会有很大帮助。谢谢。

database-design github relational-database continuous-delivery microservices

5
推荐指数
1
解决办法
1561
查看次数

Nativescript持续交付

我刚开始学习并使用nativescript; 一切似乎都没问题,我正在取得进展,但我无法找到持续交付的解决方案.(在推送bitbucket中的master分支时,我想自动进行构建并分发它).我尝试过来自Microsoft的appcenter(之前我用过Xamarin)但是无法使它工作.

continuous-delivery nativescript

5
推荐指数
1
解决办法
296
查看次数

如何使用GitHub Actions对构建工件进行版本控制?

我的用例是我希望每个构建/运行的工件都有一个唯一的版本号。在使用诸如CircleCI,Travis等当前工具的情况下,有可用的内部版本号,基本上它是一个总会增加的计数器。因此,我可以创建类似的版本字符串0.1.0-27。即使对于相同的提交,此计数器也会每次增加。

如何使用GitHub Actions做类似的事情?Github操作仅提供GITHUB_SHA和GITHUB_REF。

versioning automation github continuous-delivery github-actions

5
推荐指数
2
解决办法
665
查看次数

Gradle 与 Junit5 的多项目集成测试

如何在多项目构建文件中使用 Gradle 5.2 和 JUnit 5.3 创建集成测试?

这是我当前的构建文件:

buildscript {
  repositories {
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath "gradle.plugin.com.github.spotbugs:spotbugs-gradle-plugin:1.6.10"
    classpath 'org.owasp:dependency-check-gradle:5.0.0-M2'
  }
}


allprojects {
  defaultTasks 'clean', 'build', 'publish', 'installDist'
  group = 'coyote'
  version = '0.1.0'
}

subprojects {

  apply plugin: 'java'
  apply plugin: 'jacoco'
  apply plugin: "com.github.spotbugs"
  apply plugin: 'org.owasp.dependencycheck'
  apply plugin: 'maven-publish'
  apply plugin: 'application'
  apply plugin: 'eclipse'
  apply plugin: 'idea'

  repositories {
    jcenter()
    mavenCentral()
  }

  dependencies {
    testImplementation ("org.junit.jupiter:junit-jupiter-api:5.3.2")
    testRuntimeOnly ("org.junit.jupiter:junit-jupiter-engine:5.3.2")
    spotbugsPlugins ("com.h3xstream.findsecbugs:findsecbugs-plugin:1.8.0")
  } …
Run Code Online (Sandbox Code Playgroud)

continuous-integration integration-testing gradle continuous-delivery junit5

5
推荐指数
1
解决办法
2651
查看次数

是否有任何 Jenkins 插件允许在将代码升级到生产之前手动批准构建?

我对 Jenkins 用于批准工作的插件有疑问。当代码升级到生产时,我希望手动批准来构建作业。我尝试寻找插件但找不到任何解决方案。我知道 spinnaker 提供持续交付,但我不想使用Spinnaker

plugins production-environment dev-to-production jenkins continuous-delivery

5
推荐指数
1
解决办法
7491
查看次数

fastlane 错误无法打开与 olympus.itunes.apple.com 的 TCP 连接:443(getaddrinfo:未提供节点名或服务名,或未知)

问题

在执行以下命令后,我收到一个新的 Fastlane 错误:

bundle exec fastlane beta --verbose
Run Code Online (Sandbox Code Playgroud)

错误信息

Failed to open TCP connection to olympus.itunes.apple.com:443 (getaddrinfo: nodename nor servname provided, or not known)

fastlane finished with errors
Run Code Online (Sandbox Code Playgroud)

当前步骤:试点

任何想法?

ios continuous-delivery fastlane

5
推荐指数
1
解决办法
2897
查看次数

GitLab CI 错误:将工件上传到协调器 - 失败 - responseStatus 400 错误请求

我正在使用 GitLab(免费版)管道,并开始在正在运行的管道上收到以下错误。

这是我的一个.gitlab-ci.yml重现错误的最小示例(尽管我认为它与我的代码无关):

default:
  image: node:10-alpine

stages:
- build

build:
  stage: build
  script:
  - npm install
  artifacts:
    paths:
    - node_modules/
  only:
  - Staging
.
.
.
Run Code Online (Sandbox Code Playgroud)

错误日志:

 64 packages are looking for funding
   run `npm fund` for details
Running after_script
Saving cache
Uploading artifacts for successful job
 Uploading artifacts...
 node_modules/: found 62788 matching files          
 WARNING: Uploading artifacts to coordinator... failed  id=512111 responseStatus=400 Bad Request status=400 Bad Request token=4Dwaaa
 WARNING: Retrying...                                context=artifacts-uploader error=invalid argument
 WARNING: Uploading artifacts to …
Run Code Online (Sandbox Code Playgroud)

continuous-integration continuous-deployment continuous-delivery gitlab gitlab-ci

5
推荐指数
1
解决办法
4669
查看次数

触发器分支属性的变量扩展会阻止创建下游管道

触发器属性的分支属性使用变量的分支作业将始终失败,原因是:无法创建下游管道。

重现步骤

  1. trigger像平常一样设置具有属性的下游管道。
  2. branch属性添加到触发器属性。写入下游存储库上现有分支的名称,例如master/main或功能分支的名称。
  3. 运行管道,观察下游管道已成功创建。
  4. 现在更改branch属性以使用变量,例如branch: $CI_TARGET_BRANCH.
  5. 手动运行 CI 管道,通过 GitLab GUI 设置变量。
  6. 该作业将立即失败,原因是:无法创建下游管道。

代码示例

目标是创建一个运行指定下游分支管道的 GitLab CI 配置。当尝试使用变量执行此操作时会出现该错误。

这有效,像平常一样创建下游管道。但分支名称是硬编码的:

stages:
  - deploy

deploy:
  variables:
    environment: dev
  stage: deploy
  trigger:
    project: group/project
    branch: foo
    strategy: depend
Run Code Online (Sandbox Code Playgroud)

这是行不通的;虽然TARGET_BRANCH设置成功,但是由于无法创建下游管道,作业失败:

stages:
  - removeme
  - deploy

before_script:

  - if [ -z "$TARGET_BRANCH" ]; then TARGET_BRANCH="main"; fi
  - echo $TARGET_BRANCH

test_variable:
  stage: removeme
  script:
    - echo $TARGET_BRANCH

deploy:
  variables:
    environment: dev
  stage: …
Run Code Online (Sandbox Code Playgroud)

continuous-integration continuous-delivery gitlab gitlab-ci

5
推荐指数
1
解决办法
2091
查看次数

如何在 Azure 发布管道中使用多个工件/阶段?

我有以下场景:

updates branch develop -> triggers DEV-CI -> triggers Release X
updates branch master -> triggers QA-CI -> triggers Release X
updates branch release -> triggers Prod-CI -> triggers Release X
Run Code Online (Sandbox Code Playgroud)

在“Release X”中,我添加了所有 3 个工件(dev、qa 和 prod)和 3 个独立的阶段(dev、qa 和 prod)。我的目标是,如果分支开发更新,则发布到 DEV,如果主分支更新,则发布到 QA,依此类推,但发布管道不会启动,因为它需要所有 3 个工件都可用。

仅当我只有一对一时它才有效,如下所示:

在此输入图像描述

如果我添加其他工件,即使在每个特定工件的预部署条件中添加工件过滤器之后,发布也不会开始,直到所有 3 个工件都可用。

是否可以做我在这里尝试的事情,或者我必须为每个 CI 创建一个版本?

谢谢!

编辑

听完李老师的回答,我又试了一次,还是不行。即使只运行了 QA CI,这两个环境都会被触发。

结果是这样的: 在此输入图像描述

这里 QA 版本正在下载两个工件,即使有一个特定的工件过滤器:

在此输入图像描述

这是生成该结果的设置:

在此输入图像描述

在此输入图像描述

在此输入图像描述

在此输入图像描述

continuous-delivery azure-devops azure-pipelines azure-pipelines-release-pipeline

5
推荐指数
1
解决办法
3202
查看次数

我如何提供从 Laravel 生成的 phpDocumentor 文档?

所以我使用 phpDocumentor 3 为我的 Laravel 7 项目生成文档,

我想知道我是否可以从 Laravel 提供此文档(静态文件),以便仅对授权用户可用。

我希望能够通过我的CI/CD更新文档,所以我不能只手动修改生成的文档。

我认为我可能必须为此编写自己的模板(https://docs.phpdoc.org/3.0/guide/guides/templates.html),但我不确定文档是否不完整或者我是否缺少一些东西,因为我不知道如何创建模板。有什么建议、指南或教程可以帮助我实现这一目标吗?
谢谢

php phpdoc continuous-delivery laravel

5
推荐指数
1
解决办法
964
查看次数