我是配置管理和部署工具的新手.我必须为我曾经掌握过的最有趣的项目之一实施持续交付/持续部署工具.
首先,单独地,我很自在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
是否可以将gitlab ci作业标记为手动启动?
我需要它来部署应用程序,但我想决定它是否将被部署
continuous-deployment continuous-delivery gitlab gitlab-ci gitlab-ci-runner
我一起听到这些术语,并想知道有什么区别?它们与持续构建和持续部署有何关系?
我有两个工作流程:CI(用于持续集成)和 CD(用于持续交付)。两者单独工作都很好。我的目标是仅在以下情况下运行 CD 工作流程:
为了实现我的目标,我正在使用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
到目前为止的故事:
这就是需要帮助的地方。
我花了好几天的时间寻找一种自动创建 PipeLine Build TAG 的方法,但只找到了我已经拥有的答案。如果它是 YAML 中的步骤/任务或构建管道中的设置,我可能不会。如果有人能指出我正确的方向,我将不胜感激。
最终目标是如果构建成功,则将原始源 GIT TAG 推送到 Build TAG 中。
注意:我只在 YAML 中工作,无论什么设置都是 Azure Devops 版本 Dev18.M170.1 自带的,即没有插件。
我的团队使用Visual Studio Online("VSO")来管理我们的ALM.
我们已经有一个按钮构建过程,用于从我们的本地Git仓库(远程)构建代码,并将其部署到Azure上的Microsoft Azure网站.
除此之外,我们还希望通过按下按钮构建和部署本地开发测试环境.
从VSO的ALM生态系统中将自动化的本地开发测试部署集成到我们的开发流程中的最佳方法是什么?
[我们也拥有TFS 2012 - 有没有办法从VSO利用它来驱动我们的VSO git仓库的内部部署构建部署?]
continuous-integration continuous-deployment continuous-delivery azure-devops
我有一个 repo,它有两个分支:
众所周知,develop 分支中的代码可作为“alpha”版本发布,而 master 中的代码已知可用于生产。
目前,开发分支的策略要求必须成功完成 CI 构建才能合并 PR。该构建将创建带有预发布标记 (alpha-####) 的 NuGet 包工件。
发布管道负责获取这些包并将它们发布到内部 NuGet 源。
我想要实现的是在 PR 完成时自动触发发布管道,而不是在 CI 构建成功时自动触发。
我希望“拉取请求触发器”能做到这一点,但令我惊讶的是,触发器不会确认 PR 的状态,并且在 CI 构建完成后立即启动发布管道。
这意味着如果 PR 因任何原因被拒绝,NuGet 仍可能部署到我的提要!
我在这里做错了什么?为什么拉取请求触发器与持续部署触发器的工作方式没有任何不同?那它的目的是什么?:/
continuous-integration nuget continuous-delivery azure-devops
在我的机器人中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
我知道 GitHub Action 手动触发是一个经常讨论的问题,手动审批的讨论较少,但仍然存在于社区中。
我有一个问题想问那些使用 Github actions 进行 CD 的人。
如您所知,Bitbucket、Gitlab、Azure Devops 等具有手动批准功能,这意味着管道可以到达流程中的某个步骤,例如:构建 -> 测试 -> 部署到登台。
下一步是部署到生产环境,但需要手动批准或触发。所以我的问题是,你们中是否有人使用相同的信息(分支名称、相同的测试结果)在 GitHub 操作中实现了该功能,而无需再次运行整个管道?(这就是为什么我还没有将我们从 Bitbucket 迁移到 GitHub 的原因)
谢谢您的回答