微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当托管清单与源代码分开时,如何创建功能分支?

如何解决当托管清单与源代码分开时,如何创建功能分支?

令我感到困惑的部分是关于将源代码与清单分开的建议,例如对此要说的是:

强烈建议使用其他Git存储库来保存kubernetes清单(与应用程序源代码分开)。有关更多理由,请参见best practices

一个典型的项目中,我将使用设置测试环境,然后使用on_stop action删除每个PR的环境。但是,如果我将清单文件与源代码分开,则不清楚应该在看什么。

为示例起见,假设我们有两个存储库:

  • foo托管应用代码
  • bar托管不同应用的清单

假设:

  1. 我在feature-001分支中创建了一个新分支foo
  2. 每次我们向feature-001添加提交时,都会创建一个新的图像(foo:$COMMIT_SHA)。

我将如何创建一个受控的应用程序来监视此分支的更改?

我当然可以使用CLI创建应用程序:

argocd app create "foo-$COMMIT_SHA" --repo https://github.com/gajus/bar.git --path bar -p image=foo:$COMMIT_SHA

但是ArgoCD如何知道要跟踪该feature-001分支的更改?即从该分支发布新的Docker映像时,如何告诉部署该应用程序的新版本?

解决方法

我将如何创建一个argocd受控的应用程序来监视此分支的更改?

我不确定您为什么不使用CLI选项。 CLI可以创建一个应用程序,其中包括指向git修订版(can be a branch)。

例如:

argocd app create "foo-$COMMIT_NAME"
  --repo https://github.com/gajus/bar.git
  --path bar
  --revision $BRANCH_NAME
  --parameter image=foo:$COMMIT_SHA
  --sync-policy automated

请注意此处设置的自动同步策略。这意味着对修订的任何更新都将更新分支。

从该分支发布新的Docker映像时,我如何告诉argocd部署该应用程序的新版本

以上答案解释了ArgoCD应用程序如何跟踪git的变化,但是这个问题暗示了更新部署/复制清单清单中的标签的问题。这在很大程度上取决于您如何为主分支执行此操作。有些人将进行硬编码,另一些人将$COMMIT_SHA从仓库foo提交到仓库bar,而其他人则使用模板语言并注入变量。

基于您的关注,我将假设您遵循从仓库foo到仓库bar的提交方式。如果是这种情况,我建议将标志--upsert添加到CLI命令中,并在分支管道中每次都运行相同的CLI命令。

注意:此处添加的奖励选项是为--label branch=${BRANCH_NAME}之类的东西添加一个附加标志。然后可以将其用于定期查找/清除任何分支部署。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?