标签: continuous-delivery

Docker和Ansible如何结合起来实现Continuos Delivery/Continuous Deployment

我是配置管理和部署工具的新手.我必须为我曾经掌握过的最有趣的项目之一实施持续交付/持续部署工具.

首先,单独地,我很自在AWS,我知道它是什么Ansible,它背后的逻辑和目的.我没有相同程度的理解,Docker但我明白了.我经历了很多互联网资源,但我无法了解全局.

我一直在努力的是他们如何融合在一起.使用Ansible,我可以管理我的基础设施作为代码; 构建EC2实例,安装包......我甚至可以通过拉动代码,修改配置文件和启动Web服务器来部署完整的应用程序.Docker它本身就是一个打包应用程序的工具,并确保它可以在任何部署它的地方运行.

我的问题是:

Docker(或Ansible和Docker)如何扩展持续集成流程!?

假设我们有一个源代码存储库,团队成员完成了一项功能,他们推动了他们的工作.Jenkins检测到这一点,运行所有接受/单元/集成测试套件,如果它们全部通过,则将其声明为稳定版本.Docker如何适合这里?我的意思是当团队推动他们的工作时,Jenkins是否必须在应用程序中提取编码的Docker文件源,构建应用程序的映像,启动容器并针对它运行所有测试,或者以经典方式运行测试,如果一切都很好然后它从Docker文件构建Docker镜像并将其保存在私人场所?Jenkins应该使用xyz标记最终图像吗?

Docker容器配置:

假设我们有一个Jenkins存储在某处的图像,如何处理将相同的图像部署到不同的环境,甚至是不同的配置参数(Vhosts配置,数据库主机,队列URL,S3端点等......)最灵活的是什么如何在不破坏Docker原则的情况下处理这个问题?这些配置是在构建时还是基于它的容器启动时支持在映像中,如果是这样,它们是如何注入的?

Ansible和Docker:

Ansible提供了一个Docker管理Docker容器的模块.假设我解决了上面提到的问题,当我想部署我的应用程序的新版本xtz时,我告诉Ansible从存储它的位置拉出该图像,启动应用程序容器,以便如何注入配置设置!?Ansible是否必须在运行之前登录Docker镜像(这对我来说听起来很疯狂)并且使用其Jinja2模板与经典主机相同!?如果没有,这是如何处理的?!

对不起,如果这是一个很长的问题,或者我拼错了什么,但这是我大声思考的问题.过去两周我被封锁了,我无法弄清楚正确的工作流程.我希望这能成为未来读者的参考.

请阅读您的经验和解决方案非常有用,因为这看起来像是一个常见的工作流程.先感谢您.任何帮助深表感谢.

amazon-web-services continuous-deployment continuous-delivery ansible docker

17
推荐指数
1
解决办法
729
查看次数

GitLab CI手动启动作业(部署)

是否可以将gitlab ci作业标记为手动启动?

我需要它来部署应用程序,但我想决定它是否将被部署

continuous-deployment continuous-delivery gitlab gitlab-ci gitlab-ci-runner

15
推荐指数
2
解决办法
8977
查看次数

持续集成,持续交付和DevOps有什么区别?

我一起听到这些术语,并想知道有什么区别?它们与持续构建和持续部署有何关系?

continuous-integration continuous-delivery devops

14
推荐指数
1
解决办法
1万
查看次数

Github Actions:基于新标签使用workflow_run

我有两个工作流程:CI(用于持续集成)和 CD(用于持续交付)。两者单独工作都很好。我的目标是仅在以下情况下运行 CD 工作流程:

  • 在 master 分支上创建了一个像 v1.1.1 这样的新标签
  • CI工作流程完成

为了实现我的目标,我正在使用workflow_run事件。这些是我的工作流程文件的片段:

ci.yml:

name: CI

on:
  push:
    tags: v[1-9]+.[0-9]+.[0-9]+
    
  pull_request:
    branches: [develop, hotfix*]
Run Code Online (Sandbox Code Playgroud)

cd.yml

name: CD

on:
  workflow_run:
    workflows: [CI] 
    branches: [master]
    types:     
      - completed
Run Code Online (Sandbox Code Playgroud)

当前的行为是:在主分支中创建标签时,仅运行 CI 工作流程。我试过tags: v[1-9]+.[0-9]+.[0-9]+放入workflow_run行为是相同的。

我的问题是:我怎样才能实现我的目标?是否可以?

continuous-integration github continuous-delivery github-actions

12
推荐指数
1
解决办法
1161
查看次数

成功构建后如何自动创建构建管道标签(不是 GIT 标签)?

到目前为止的故事:

  • 当我有一个想要部署的提交时,我会创建一个 GIT 标签作为构建的基础,例如“RC1”
  • GIT TAG 的创建会自动触发 PipeLine Build 开始。
  • 成功完成 PipeLine Build 后,它会在源提交上创建一个新的 GIT TAG,其中包含 BuildNumber_BuildId,以便稍后交叉引用。
  • 我还有一个发布管道,然后用于进行部署(我喜欢分离),我想过滤 Build TAG =“RC*”
  • 我可以手动创建构建标签,但是......

这就是需要帮助的地方。

我花了好几天的时间寻找一种自动创建 PipeLine Build TAG 的方法,但只找到了我已经拥有的答案。如果它是 YAML 中的步骤/任务或构建管道中的设置,我可能不会。如果有人能指出我正确的方向,我将不胜感激。

最终目标是如果构建成功,则将原始源 GIT TAG 推送到 Build TAG 中。

注意:我只在 YAML 中工作,无论什么设置都是 Azure Devops 版本 Dev18.M170.1 自带的,即没有插件。

continuous-delivery azure-devops azure-pipelines

12
推荐指数
2
解决办法
2万
查看次数

在artifactory存储库中,文件集成修订版和文件夹集成修订版之间有什么区别?

我正在查看不同的存储库布局,我看到文件夹集成修订和文件集成修订之间的区别.

这些是相同的版本号(只放在文件和/或文件夹中)还是不同的东西?

这是一个链接,我看到这两个提到:存储库布局

artifact artifactory continuous-delivery

11
推荐指数
1
解决办法
2250
查看次数

如何使用Visual Studio在线持续交付部署内部部署

我的团队使用Visual Studio Online("VSO")来管理我们的ALM.

我们已经有一个按钮构建过程,用于从我们的本地Git仓库(远程)构建代码,并将其部署到Azure上的Microsoft Azure网站.

除此之外,我们还希望通过按下按钮构建和部署本地开发测试环境.

从VSO的ALM生态系统中将自动化的本地开发测试部署集成到我们的开发流程中的最佳方法是什么?

[我们也拥有TFS 2012 - 有没有办法从VSO利用它来驱动我们的VSO git仓库的内部部署构建部署?]

continuous-integration continuous-deployment continuous-delivery azure-devops

11
推荐指数
1
解决办法
8791
查看次数

Azure DevOps:如何在拉取请求完成后触发发布?

我有一个 repo,它有两个分支:

  • 开发(repo 的默认分支)
  • 掌握

众所周知,develop 分支中的代码可作为“alpha”版本发布,而 master 中的代码已知可用于生产。

目前,开发分支的策略要求必须成功完成 CI 构建才能合并 PR。该构建将创建带有预发布标记 (alpha-####) 的 NuGet 包工件。

发布管道负责获取这些包并将它们发布到内部 NuGet 源。

我想要实现的是在 PR 完成时自动触发发布管道,而不是在 CI 构建成功时自动触发。

我希望“拉取请求触发器”能做到这一点,但令我惊讶的是,触发器不会确认 PR 的状态,并且在 CI 构建完成后立即启动发布管道。

这意味着如果 PR 因任何原因被拒绝,NuGet 仍可能部署到我的提要!

我在这里做错了什么?为什么拉取请求触发器与持续部署触发器的工作方式没有任何不同?那它的目的是什么?:/

continuous-integration nuget continuous-delivery azure-devops

11
推荐指数
1
解决办法
6081
查看次数

在travis yml文件上配置gradle.properties android.enableAapt = false

在我的机器人中gradle.properties我有以下内容:

android.enableAapt2=false
Run Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)

以下是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": …
Run Code Online (Sandbox Code Playgroud)

continuous-integration android aapt continuous-delivery travis-ci

9
推荐指数
1
解决办法
3122
查看次数

GitHub 操作 手动审批流程

我知道 GitHub Action 手动触发是一个经常讨论的问题,手动审批的讨论较少,但仍然存在于社区中。

我有一个问题想问那些使用 Github actions 进行 CD 的人。

如您所知,Bitbucket、Gitlab、Azure Devops 等具有手动批准功能,这意味着管道可以到达流程中的某个步骤,例如:构建 -> 测试 -> 部署到登台。

下一步是部署到生产环境,但需要手动批准或触发。所以我的问题是,你们中是否有人使用相同的信息(分支名称、相同的测试结果)在 GitHub 操作中实现了该功能,而无需再次运行整个管道?(这就是为什么我还没有将我们从 Bitbucket 迁移到 GitHub 的原因)

谢谢您的回答

continuous-delivery devops github-actions

9
推荐指数
1
解决办法
2万
查看次数