【补充】Gitlab 部署 CI 持续集成

By | 2017-09-20

上一篇:《劈荆斩棘:Gitlab 部署 CI 持续集成》 上一篇所配置的.gitlab-ci.yml: stages: – build – test before_script: – echo “Restoring NuGet Packages…” – C:\NuGet\nuget.exe restore “src\CNBlogsCI-Sample.sln” only: – master build_job: stage: build script: – echo “Release build…” – C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe /consoleloggerparameters:ErrorsOnly /maxcpucount /nologo /property:Configuration=Release /verbosity:quiet “src\CNBlogsCI-Sample.sln” except: – tags only: – master test_job: stage: test script: – echo “Tests run…” – C:\xunit.runner.console\tools\xunit.console.exe… Read More »

劈荆斩棘:Gitlab 部署 CI 持续集成

By | 2017-09-20

阅读目录: install configue gitlab-ci-multi-runner restore nuget packages bulid .sln run unit tests configue .gitlab-ci.yml configue build status badge image CI 精华文章: 持续集成是什么? 重温大师经典:Martin Fowler 的持续集成 Gitlab 部署 CI 相关资料: 配置 gitlab-ci 进行持续集成 使用 GitLab-CI 来自动创建 Docker 镜像 基于 gitlab 搭建 CI 环境 使用 gitlab 和 gitlab_ci 进行持续集成 持续集成(Continuous integration – CI)的作用:代码在提交到资源库之前,进行构建、自动化测试和发布等等,我们每天需要提交大量的代码,持续集成可以有效的帮助我们发现代码中的 Bug,并且减少一些反复的工作等等,使团队更加有效的开发协作。 GitLab CI 官方介绍:https://about.gitlab.com/gitlab-ci/… Read More »

关于RPM的%config和(noreplace)

By | 2017-09-18

这篇文章翻译自这里, 是一篇关于制作RPM包中的一个比较难于理解的地方。 不做开发的同学就不要看了。 RPM spec文件有个名为 %config 的宏,它可以标识配置文件, 这样在升级时用户对配置文件做过的修改就不会丢失。 没有它,用户千辛万苦修改过的配置文件会在升级过程中被覆盖。 %config也可以写成%config(noreplace),不过网上关于它的说明却屈指可数。 下面是关于这两者的一些实验,都是在RedHat 9的RPM(rpm-4.2-0.69)上进行的, 其他版本有可能不同。 RPM中的文件的制约条件有三个:1. 该文件在spec中如何标识(默认,%config或者%config(noreplace)); 2. 在rpm升级包中该文件是否被更新;3. 该文件是否被用户编辑过。 下表就是各个条件的组合结果。 文件标识 在RPM升级包中是否更新了? 旧版本文件未被用户编辑过 旧版本文件被用户编辑过 默认 No 用新文件覆盖 用新文件覆盖 ~ Yes 用新文件覆盖 用新文件覆盖 %config No 用新文件覆盖 保持旧文件 ~ Yes 用新文件覆盖 旧文件改名为.rpmsave并复制新文件 %config(noreplace) No 用新文件覆盖 保持旧文件 ~ Yes 用新文件覆盖 保持旧文件,新文件安装为.rpmnew 其中(noreplace)有效的两种情况上存在以下的问题:当spec文件中的定义改变时会发生什么?结论如下: 文件标识 在RPM升级包中是否更新了? 旧版本文件被用户编辑过 由%config(noreplace)改为%config Yes 旧文件改名为.rpmsave并安装新文件 由%config改为%config(noreplace)… Read More »

使用kubeadm在Red Hat 7/CentOS 7快速部署Kubernetes 1.7集群

By | 2017-09-14

前言 kubeadm是Kubernetes官方推出的快速部署Kubernetes集群工具,其思路是将Kubernetes相关服务容器化(Kubernetes静态Pod)以简化部署。kubeadm当前处于beta阶段,不建议生产环境使用(比如etcd单点)。使用kubeadm部署Kubernetes集群非常简单方便,本文记录了在Red Hat 7上用kubeadm部署一个安全的Kubernetes集群的全过程,CentOS 7部署过程与之类似。 如需kubeadm部署一个高可用的集群,可采用如下方式 kubeadm init –api-advertise-addresses=vip –external-etcd-endpoints=http://x.x.x.x:2379,http://x.x.x.x:2379,http://x.x.x.x:2379 –pod-network-cidr 10.244.0.0/16 注:–api-advertise-addresses 本身支持多个api service ip,但操作kubeadm join加入集群节点会失败, 所以对外服务只配置为一个vip。 部署实例 etcd Version: 3.0.17 kubeadm: v1.7.1 kubernetes: v1.7.1 Flannel: v0.8.0 Docker: 17.03.1-ce   准备工作 1. Red Hat Enterprise Linux Server release 7.1 (Maipo)( 1GB+ RAM) 2. 集群机器之间网络互通 目标 1. 部署一个安全的Kubernetes v1.7.1集群 2. 部署pod网络以便pod之间可以互通 部署步骤 安装docker Kubeadm目前并未在Docker 1.13,17.03+等高级版本进行验证,Kubernetes官方推荐的Docker1.10,1.11,1.12版本。对于Centos,推荐Docker Storage Driver 采用Devicemapper的direct-lvm模式。Docker以及direct-vm参见Docker官网。 Docker安装请参见官网:https://docs.docker.com/engine … ntos/ 通过docker version查看docker版本: sudo docker version Client: Version:      17.03.1-ce… Read More »

使用kubeadm安装kubernetes1.7

By | 2017-09-14

环境 下载kubernetes和安装 1 方案1使用阿里云yum镜像 2 使用国外服务器下载安装包 下载kubernetes镜像 配置kubelet 启动相关组件 创建集群 配置kubectl的kubeconfig 安装flannel master节点安装验证 node节点安装和加入集群 node节点安装验证 参考 自动化脚本已经上传到github: https://github.com/zhuchuangang/k8s-install-scripts/tree/master/kubeadm 0 环境 环境: 主机名 IP k8s-master 172.16.120.151 k8s-node01 172.16.120.152 k8s-node02 172.16.120.153 ==mac os x固定vware虚拟机IP sudo vi /Library/Preferences/VMware\ Fusion/vmnet8/dhcpd.conf 在文件末尾添加== host CentOS01{ hardware ethernet 00:0C:29:15:5C:F1; fixed-address 172.16.120.151; } host CentOS02{ hardware ethernet 00:0C:29:D1:C4:9A; fixed-address 172.16.120.152; } host CentOS03{… Read More »

使用docker-maven-plugin插件实现Docker构建并提交到私有仓库

By | 2017-09-13

使用Maven插件实现项目打包及Docker构建并提交到私有仓库 以下内容非教程,不适合对Docker及Maven不熟悉者使用 目标:Spring Boot项目打包成可执行的jar文件后,使用docker-maven-plugin(spotify)插件自动构建Docker后上传到阿里云Docker镜像仓库(其他仓库同理) 引用参考: docker-maven-plugin插件:https://github.com/spotify/docker-maven-plugin Maven提交服务密码加密:https://maven.apache.org/guides/mini/guide-encryption.html Maven的settings.xml:http://maven.apache.org/ref/3.3.9/maven-settings/settings.html 准备工作: 本机安装 Docker 1.9 Eclipse环境(本机使用STS) Maven环境 阿里云Docker仓库(其他Docker仓库都可以) 如果需要Maven项目部署,需要Maven私服() SecureCRT (其他终端皆可,仅用于启动Docker测试) 1、 构建Spring Boot项目 项目目录 2、 pom.xml文件中 加入docker-maven-plugin插件 完整pom文件: <?xml version=”1.0″ encoding=”UTF-8″?> <project xmlns=”http://maven.apache.org/POM/4.0.0″ xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>dockerdemo</artifactId> <version>0.0.1</version> <packaging>jar</packaging> <name>dockerdemo</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.3.RELEASE</version> <relativePath/> <!– lookup parent from repository… Read More »

使用Draft简化容器应用的开发流程

By | 2017-09-13

Draft是微软Deis团队开源(见Azure/draft)的容器应用开发辅助工具,它可以帮助开发人员简化容器应用程序的开发流程。 Draft主要由三个命令组成 draft init:初始化docker registry账号,并在Kubernetes集群中部署draftd(负责镜像构建、将镜像推送到docker registry以及部署应用等) draft create:draft根据packs检测应用的开发语言,并自动生成Dockerfile和Kubernetes Helm Charts draft up:根据Dockfile构建镜像,并使用Helm将应用部署到Kubernetes集群(支持本地或远端集群)。同时,还会在本地启动一个draft client,监控代码变化,并将更新过的代码推送给draftd。 Draft安装 由于Draft需要构建镜像并部署应用到Kubernetes集群,因而在安装Draft之前需要 部署一个Kubernetes集群,部署方法可以参考kubernetes部署方法(注意minikube的支持还有问题,暂时不要使用) 安装并初始化helm(需要v2.4.x版本,并且不要忘记运行helm init),具体步骤可以参考helm使用方法 注册docker registry账号,比如Docker Hub或Quay.io 配置Ingress Controller并在DNS中设置通配符域*的A记录(如*.http://draft.example.com)到Ingress IP地址。最简单的Ingress Controller创建方式是使用helm: # 部署nginx ingress controller $ helm install stable/nginx-ingress –namespace=kube-system –name=nginx-ingress # 等待ingress controller配置完成,并记下外网IP $ kubectl –namespace kube-system get services -w nginx-ingress-nginx-ingress-controller 初始化好Kubernetes集群和Helm后,可以在这里下载draft二进制文件,并配置draft # 注意修改用户名、密码和邮件 $ token=$(echo ‘{“username”:”feisky”,”password”:”secret”,”email”:”feisky@email.com”}’ | base64) #… Read More »

Harbor的搭建(vmware企业级docker镜像私服)

By | 2017-09-13

1、下载harbor,地址https://github.com/vmware/harbor 2、进入harbor-master/Deploy目录,修改harbor.cfg文件,主要修改以下信息 2.1、hostname =10.10.20.202 (这个是harbor所在服务器的ip,不能写127.0.0.1) 2.2、修改邮箱相关信息 3、执行./prepare命令 4、添加/etc/sysconfig/docker文件,文件内容如下: OPTIONS=”–insecure-registry 10.10.20.202″ 5、修改/usr/lib/systemd/system/docker.service文件 5.1、新增一行,EnvironmentFile=-/etc/sysconfig/docker,该文件只有一行内容,OPTIONS=”–insecure-registry 10.10.20.202″,如果/usr/lib/systemd/system/docker.service文件中不增加EnvironmentFile=-/etc/sysconfig/docker这行,下面对ExecStart的修改是不生效的。 5.2、修改一行,ExecStart=/usr/bin/dockerd $OPTIONS 为什么要修改这个配置文件呢?–insecure-registry代表本地镜像库,修改了以上配置文件后需要重启docker服务,此时docker login时,将连接指定的本地镜像库。 如果不修改这个配置文件,则登录镜像私服时(docker login 10.10.20.202)会抛出如下错误 Error response from daemon: Get https://10.10.20.202/v1/users/: dial tcp 10.10.20.202:443: getsockopt: connection refused 6、重启docker服务 service docker restart 7、build并启动 docker-compose up -d 8、从docker hub上下载hello-world镜像 docker run hello-world 9、给镜像打标签,以便上传到私服,其中library是harbor默认提供的项目 docker tag hello-world 10.10.20.202/library/hello-world 10、上传镜像 登录镜像私服,执行以下指令,再输入用户名和密码 docker login 10.10.20.202… Read More »

docker 镜像仓库 Harbor 部署 以及 跨数据复制

By | 2017-09-13

docker 镜像仓库 Harbor 部署 跨数据复制 Harbor 是 Vmwar 公司开源的 企业级的 Docker Registry 管理项目 它主要 提供 Dcoker Registry 管理UI,可基于角色访问控制, AD/LDAP 集成,日志审核等功能,完全的支持中文。 Harbor 的所有组件都在 Dcoker 中部署,所以 Harbor 可使用 Docker Compose 快速部署。 注: 由于 Harbor 是基于 Docker Registry V2 版本,所以 docker 版本必须 > = 1.10.0 docker-compose >= 1.6.0 开源项目地址:https://github.com/vmware/harbor 一、 使用docker compose 快速部署: 首先用 git 下载 源码。 git… Read More »

搭建基于Selenium+TestNG+Maven+Jenkins+SVN的Web端UI自动化测试环境

By | 2017-09-11

一、 创建Maven项目,下载Selenium和TestNG的依赖(依赖可以理解为你要用到的jar包)。 1.     问题。 为什么要创建Maven项目呢? 答:Maven项目可以方便的管理依赖,通俗的讲,你需要的jar包,写到POM.xml文件中,Maven可以自动下载。省却了你先把jar文件放进libs,再BuildPath这一步。同时呢,其他项目如果也用到这些jar包,Maven会自动从本地仓库中直接取出来,不用再次下载。 2. 步骤。 1.  File-New-Project… Xr-原创 2. Maven Project- Next Xr-原创 3. Next Xr-原创 4. 选择maven-archetype-quickstart-Next Xr-原创 5. 输入Group Id:域.公司简称;Artifact Id:项目名称 -Finish. Xr-原创 6. 创建完成后,目录中能找到自己创建的项目,说明Maven项目已成功创建。 Xr-原创 7. 配置Selenium和TestNG的依赖。 打开Pom.xml文件-如下图-添加红框中的依赖。本人用的是testng6.9.10和selenium的2.53.0版本。(嘘,不需要你自己敲,从网上直接复制粘贴进来即可,不会的看步骤8,会的请忽略) Xr-原创 8. 打开搜索引擎-搜索repository maven-点击进入官网 Xr-原创 输入testng-点击Search-再点击org.testng>testng Xr-原创 找到你需要的Version-点进去 Xr-原创 单击红框中的代码-复制-粘贴到Pom文件中,IDE会自动下载你需要的jar。 Xr-原创 展开项目下的Maven Dependencies-能够看到说明你已经下载成功。看不到可以刷新下试试。 Xr-原创 9. Eclipse中安装Testng插件-help-Eclipse MarketPlace-搜索testNG.(不成功自行百度,不再缀述哦) 二、将项目配置到SVN平台。 1. 问题。… Read More »