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

在GitLab中触发CodeDeploy吗?

如何解决在GitLab中触发CodeDeploy吗?

我正在AWS的CI / CD管道上工作。对于给定的信息,我必须使用GitLab作为存储库,并使用Blue / Green Deployment作为ECS Fargate的部署方法。我想使用CodeDeploy(在Cloudformation模板中预设),并通过每次对GitLab的提交推送来触发它。我无法在我的区域中使用CodePipeline,因此不适用于我。

我已经阅读了很多与ECS Fargate和B / G部署相关的文档和网页。但是似乎没有太多信息可以帮助您。有没有相关经验?

解决方法

如果您的目标是零停机时间,则默认情况下ECS已打包为打包,但不是我所谓的Blue / Green部署,而是滚动升级。通过ECS排空旧任务的连接并使用新版本配置新任务,您将能够控制正常实例的百分比,确保没有停机时间。

您的应用程序必须能够处理版本中的“双重性”,例如在数据层,UX等上。

如果蓝色/绿色是必不可少的要求,则必须将CodeDeploy和ALB与ECS结合使用。在不涉及实现细节的情况下,这是它的亮点:

  • 您有两组Target GroupsCode Deploy(与一个ALB绑定)
  • import pandas as pd import numpy as np from matplotlib import pyplot as plt def h(j): s = 0 for i in range(len(t)): s+=t[i] * X[i][j] return s def J(j): s=0 for i in range(len(Y)): s+= (h(i) - Y[i])**2 return s/(2*len(Y)) def g(): temp = [] s = [] for i in range(len(t)): temp.append(0) s.append(0) for j in range(len(t)): for i in range(len(Y)): s[j]+= (h(i) - Y[i])*X[j][i] for i in range(len(t)): temp[i] = alpha * (1/len(Y)) * s[i] return temp[0],temp[1],temp[2] alpha = 0.0000000000001 epochs = 100 data = pd.read_csv("ex1data2.txt") X = np.empty(shape = (3,10)) X[0] = [ 1.00000000e+00,1.00000000e+00,1.00000000e+00 ] X[1] = [ 1.31415422e-01,-5.09640698e-01,5.07908699e-01,-7.43677059e-01,1.27107075e+00,-1.99450507e-02,-5.93588523e-01,-7.29685755e-01,-7.89466782e-01,-6.44465993e-01 ] X[2] = [-2.26093368e-01,-2.26093368e-01,-1.55439190e+00,1.10220517e+00,-2.26093368e-01 ] t = [0,0] Y = [ 399900,329900,369000,232000,539900,299900,314900,198999,212000,242500] stdevs = [0] means = [1] for i in range(np.shape(X)[0]): if i == 0: continue else: means.append(np.mean(X[i])) X[i] = X[i] - means[i] stdevs.append(np.std(X[i])) X[i] = X[i] / stdevs[i] costs = [] for i in range(epochs): costs.append(J(i)) t[0],t[1],t[2] = g() plt.plot(range(len(costs)),costs) plt.show() 部署新的任务定义,该定义已绑定 加入绿色目标群体。保持原状。
  • 通过为新目标组配置测试侦听器来测试绿色部署。
  • 测试完成后,将所有/增量流量从蓝色切换为绿色(ALB rules/weighted targets
  • 在下一次更新中重复相同的过程,除了将从绿色变为红色。

我所描述的部分由CodeDeploy处理,但是希望这可以使您对解决方案体系结构有所了解,从而可以实现自动化。 ECS B/G

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