需求:监控jenkins中项目的构建,对已打标记的构建,做版本发布,并提交给实施部门,实施部门根据接收到的发布版本进行升级工作。
现状:
1)发布包没地方管,当前在各个测试人员的电脑上
2)已发布版本找不到SVN/Git上的对应的地址
3)不知道现网是哪个版本
4)不知道已发布的包情况(有没有升级,升级包质量好还是坏)
Model:
PCI:在管理中和jenkins关联的项目
PCI_BUILD: jenkins中项目的构建信息
PCI_RELEASE: 出包
ONLINE_VERSION: 现网版本管理
View:
实现基本的增删改查,异步查询项目在jenkins中的状态。
1)对jenkins中build状态为success--进行测试
2)对测试通过的build打tag
3)对有tag的build 进行出升级包
4)根据升级包进行升级并反馈结果
其中测试、出包、升级都是线下进行,当前只对结果的记录,后期在做自动。
在view阶段使用到的:
- 使用到TemplateView、CreateView、UpdateView、DetailView、ListView、FormMixin
而Listview比TemplateView多了一个get_queryset(self)class PCIListView(TemplateView): template_name = 'devops/pci_list.html' #指定跳转的页面 model = PCI #指定表 context_object_name = 'PCI' #上下文变量 def get_context_data(self, **kwargs):#这个方法用来添加额外的内容到上下文变量中。如传递参数 context = { 'app': 'PCI', 'action': 'PCI list', } kwargs.update(context) return super(PCIListView, self).get_context_data(**kwargs)
-
通过 def get(self, request, *args, **kwargs) 获取页面传递过来的参数
pk_url_kwarg = 'pk' def get(self, request, *args, **kwargs): self.pk = pk = kwargs.get(self.pk_url_kwarg) self.pci = PCI.objects.get(id=pk) return super(PCIBuildsListView, self).get(request, *args, **kwargs)
-
通过 def get_context_data(self, **kwargs)将参数传递到下一个页面
def get_context_data(self, **kwargs): context = { 'app': 'pcibuild', 'action': 'pcibuild list', 'pk': self.pk }
页面上通过 {pk} 获取参数值
-
通过 def form_valid(self, form) 做填写字段合法性进行校验
-
views_urls的编写
urlpatterns = [ url(r'^pci/$', views.PCIListView.as_view(), name='pci-list'), url(r'^pci/create/$', views.PCICreateView.as_view(), name='pci-create'), url(r'^pci/(?P<pk>[0-9]+)/update/$', views.PCIUpdateView.as_view(), name='pci-update'), url(r'^pci/(?P<pk>[0-9]+)/$', views.PCIDetailView.as_view(), name='pci-detail'), ]
html上通过 <li><a href="{% url 'devops:pci-list' %}">构建</a></li>访问到列表页面
网友评论