什么是DevOps

https://roadmap.sh/devops

DevOps岗位职责

  • 整合公司现有工具,推动工具链的使用,借助新技术完善公司的工具链。
  • 连接开发运维测试, 以用户为中心,不断重构自己

DevOps的要求

  • 代码能力: 脚本语言+ 高级语言能力
  • 自动化能力:熟练使用并理解CI/CD 各个关键节点上的典型工具
  • IT基础能力: K8S,优化 业务流程

如何增强DevOps能力

  • 强化代码能力 + 跨职能领域核心能力+ 潜移默化的软实力建设

准备

项目:https://gitee.com/shuaiqiangliu/studentmanager

所用软件

服务器端安装jenkins

  1. 时间同步---> 确保工具集成时间一致

    1. 安装 ntpdate yum install ntp ntpdate
    2. 设置时间为阿里服务器的时间 **ntpdate ntp1.aliyun.com**
    3. 将系统时间写入硬件 **hwclock --systohc**
    4. 查看时间 date
  2. 安装Jenkins
    1. 安装JDK yum install java-1.8.0-openjdk *-y

      1. 安装目录: /usr/lib/jvm
    2. 获取Jenkins安装包
      1. 下载页面:https://www.jenkins.io/download/
      2. 安装:rpm -ivh jenkins-2.190.3-1.1.noarch.rpm
    3. 修改配置文件(这里声明的时Linux 用户 root使用的jenkins)
      1. vi /etc/sysconfig/jenkins

修改内容如下:

JENKINS_USER="root"
JENKINS_PORT="8888"
systemctl start jenkins
systemctl enable jenkins

d. 打开浏览器访问: http://安装Jenkins的IP:8888

获取并输入admin管理员账户密码( jenkins自动生成密码)

cat /var/lib/jenkins/secrets/initialAdminPassword

  1. 安装插件
  2. 创建管理员用户
  3. Jenkins用户权限配置

Jenkins下不同用户可以看到不同的工程拥有不同的权限

Jenkins的用户权限配置需要

Jenkins

jenkins + maven 构建

在Jenkins集成服务器上, 安装maven来编译和打包项目

  1. 上传Maven软件到Linux上(linux上安装maven)
apache-maven-3.3.9-bin.zip # 解压
mkdir -p /opt/maven # 创建目录
mv apache-maven-3.3.9/* /opt/maven #移动文件
  1. 在Linux下配置环境变量

    vi /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export MAVEN_HOME=/opt/maven
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
source /etc/profile # 配置生效
mvn -v # 查找Maven版本
  1. jenkins 关联JDK和Maven





  2. 配置Jenkins全局变量

    Manage Jenkins->Confifigure System->Global Properties(全局属性) ,添加三个全局变量

  3. 修改Linux上maven配置

    5.1 创建本地仓库 mkdir /root/repo

    5.2 修改配置文件vi /opt/maven/conf/settings.xml

    5.2.1



    5.2.2 声明maven下载jar包地址<mirrors>下增加mirror标签
 <mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>



6. 验证

自己把项目重新打包下

jenkins下master和slave

Jenkins 进行的大量工作(拉取代码 构建代码 发布运行),但是发现自己(master 主人)一个忙不过来,分发给一堆别的机器(slave --奴隶)干

master机器

1.启动GitLab

sudo gitlab-ctl restart 验证http://192.168.58.178:82

用户名 root 12345678

2. 启动jenkins

验证 http://192.168.178:8888/

sqxy 123456

slave机器

选择另一台Linux机器



slave机器也要配置了jdk和maven 并且路径要和在master里面配置的路径一致(因为master机器将来slave奴隶干活,slave工具 需要jdk和maven!)

# 在slave机器上配置jdk和maven
yum install java-1.8.0-openjdk* -y # 安装JDK
# 安装maven
yum install -y lrzsz
# 上传Maven软件到Linux上(Linux上安装maven)
# unzip apache-maven-3.3.9-bin.zip
mkdir -p /opt/maven # 创建目录
mv apache-maven-3.3.9/* /opt/maven # 移动文件
# linux下配置环境变量 (让系统可以知道maven安装位置)
vi /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export MAVEN_HOME=/opt/maven
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
source/etc/profile # 配置生效
mvn -v #查找版本
# 修改linux上maven配置(阿里云 下载maven路径)
mkdir /root/repo # 创建本地仓库目录
vi /opt/maven/conf/settings.xml
本地仓库改为 :/root/repo/



声明maven下载jar包地址下增加mirror标签

<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>

在master机器联通slave机器

Github Action

GitHub把 克隆代码、编译代码,运行,单元测试,构建,和发布镜像这些称为Action。

awesome-actions: https://github.com/sdras/awesome-actions

Github Action 术语

  • workflow:一个.yml文件对应一个workflow,也就是一次持续集成,一个Github仓库可以对应多个workflow
  • job : 一个workflow由一个或多个job构成,每个job代表一个持续集成任务
  • step:每个 job 由多个 step 构成,一步步完成。
  • action:每个 step 可以依次执行一个或多个命令(action)
  • on : 一个 workflow 的触发条件,决定了当前的 workflow 在什么时候被执行。

    workflow

参考资料

思考

  1. DevOps应该是测试同学推动的

    测试同学如果要更高的工资需要向测试开发发展,测试开发要让开发“信服”需要编写自动化测试工具甚至是测试平台来参与到软件开发中去。

什么是Github Actions

Github Actions是Github为托管在github.com站点的项目提供的持续集成服务,于2018年推出。

Dockerfile

一个简单的配置文件,描述如何构建一个新的image镜像(必须是Dockerfile这个文件名),必须放在项目的根目录。

Dockerfile 语法

FROM  node:14
WORKDIR
COPY
## 构建镜像时,一般用于一些系统配置,安装必备的软件,可有多个RUN.
RUN
RUN
RUN
# 启动容器时,只能有一个CMD
CMD XXXX # 环境变量
ENV k1=v1
ENV k2 =v2

构建

docker build -t <name> . # 最后的 `.` 指Dockerfile在当前目录下
docker images

自动发布到测试机

github actions 监听git 提交, 并执行自定义命令

docker 一键部署开发环境

两者结合,即可·=自动发布到测试机

主要产出

  • dev 分支push时,自动部署到测试机

    主要内容
  • 配置测试机
  • 自动发布到测试机
  • 远程接口测试

去买一个便宜的服务器,操作系统选择centos 7.X

配置测试机

阿里云较贵,可以考虑 腾讯云,华为云等

学习用,只要是一个服务器而已,不用太考虑稳定性和其他扩展能力

创建work账号

处于安全考虑,日常使用不会用root账号登录,权限太高了

用root登录,创建work账号

adduser work
passwd work

添加work 的sudo 权限

whereis sudoer # 找到文件位置 /etc/studers
sudo u+w /etc/sudoers # 修改权限, U表示所有者, w 表示写权限, + 表示加
vim /etc/sudoers # 编辑文件
# 找到 `root ALL=(ALL) ALL`
再加一行 `work ALL=(ALL) ALL`
chmod u-w /etc/sudoers
然后使用worker 登录机器

ssk登录

登录信任

git

sudo yum -y install git
git --version

docker

安装docker:

docker 镜像加速

安装docker-compose

docker version
docker-compose --version

开放端口

开放需要的端口,否则外网无法访问该端口

B端 FE:80

B端 server:8081

C端:8082

统计服务,收集日志: 8083

admin FE: 8085

admin server: 8084

线上环境不会开放这么多的端口,而是使用nginx 反向代理

测试人员假装自己会“devops”的更多相关文章

  1. 51Testing专访史亮:测试人员在国外

    不久前,我接受了51Testing的访问,讨论了软件测试的一些问题.以下是全文. 1.史亮老师,作为我们51Testing的老朋友,能和我们说说您最近在忙些什么吗? 自2011年起,我加入Micros ...

  2. 测试管理_测试人员招聘[持续更新ing]

    招聘之难,难于上青天. 如何招聘到一位称心如意的员工想必是每个公司和管理者都要面临而且头疼的问题.尤其在初建团队或团队缺人的情况下问题会显得更加严重. 作为一个测试管理者,如何招聘到合适的测试人员是必 ...

  3. 如何避免测试人员提交重复的Bug

    我们在软件测试过程中,由于不同人员测试同一个项目,所以往往会出现Bug重复提交情况,导致对整个项目和人员产生影响: 浪费测试人员时间和精力,从而影响测试进度 浪费开发人员重复看Bug时间 若开发人员由 ...

  4. 软件测试 -- 测试人员和QA的区别

    软件测试人员的职责是尽可能早的找出软件缺陷,确保得以修复. 而质量保证人员(QA)主要职责是创建或者制定标准和方法,提高促进软件开发能力和减少软件缺陷. 测试人员的主要工作是测试,质量保证人员日常工作 ...

  5. APP测试中的头疼脑热:测试人员如何驱动开发做好自测

    如今,随着移动互联网的浪潮越翻越涌,移动APP测试工作的现状已经成了那本"家家难念"的经.不管公司大小,不管测试哪种类型的APP,让广泛测试者苦不堪言的就属重复性最多,测试工作量最 ...

  6. TCP/IP体系结构-测试人员必须理解的

    如果还想在测试这条路上继续走下去的话,那么下面这些东西就是我们必须去掌握的,至少你还不想止步于简单的黑盒测试--其实,一直想去接触Linux下的应用测试,这样能学到东西会很多,而且会非常的受用.之前听 ...

  7. iOS打包app发给测试人员测试

    说明:在项目开发过程中经常需要开发人员将项目打包成ipa包后,发给测试人员进行测试.本文贴图对打包的过程简单介绍. 一.Product ->archive (注意,不能是模拟器状态,如果当前调试 ...

  8. 作为测试人员,我是这么报BUG的

    在测试人员提需求的时候,大家经常会看到,测试员和开发一言不合就上BUG.然后开发一下就炸了,屡试不爽,招招致命. 曾经看到有个段子这么写道: 不要对程序员说,你的代码有BUG. 他的第一反应是:1.你 ...

  9. 测试面试话题8:测试人员如何让开发少写bug?

    在测试过程中和不同开发合作,往往会发现一些bug都是大多数开发人员常出现的错误,为了帮助开发人员,也减少测试的重复工作量,非常有必要将以往出现的bug做整理,分析原因,让开发知道这些bug, 避免再次 ...

随机推荐

  1. Java随想1

      1If(条件){输出} Else{ } 2Switch确定范围 定值 Switch(i1){ Case 值: 输出 Break 3Do while循环 定值 Do{ 输出 运算 }while(范围 ...

  2. FreeRTOS --(9)任务管理之启动调度器

    转载自 https://blog.csdn.net/zhoutaopower/article/details/107057528 在使用 FreeRTOS 的时候,一般的,先创建若干任务,但此刻任务并 ...

  3. 虚拟机VMware 安装centos、常规配置、共享文件等

    安装centos7[通过vm来安装运行centos7] 一.准备工作 1.centos7 的安装镜像下载链接:http://isoredirect.centos.org/centos/7/isos/x ...

  4. Linux网卡绑定bond0-实验

    虚拟机添加网卡 ip addr 查看新增的网卡是否读取 添加bonding接口 [root@centos8~]$nmcli con add type bond con-name mybond0 ifn ...

  5. font-family样式对照表

    .a { font-family: "微软雅黑" } .b { font-family: "黑体" } .c { font-family: "楷体&q ...

  6. 如何生成一个java文档

    如何生成一个java文档 众所周知,一个程序给别人看可能可以看懂,几万行程序就不一定了.在更多的时候,我们并不需要让别人知道我们的程序是怎么写的,只需要告诉他们怎么用的.那么,api文档就发挥了它的作 ...

  7. 吊炸天,Spring Security还有这种用法!

    在用Spring Security项目开发中,有时候需要放通某一个接口时,我们需要在配置中把接口地址配置上,这样做有时候显得麻烦,而且不够优雅.我们能不能通过一个注解的方式,在需要放通的接口上加上该注 ...

  8. Java中如何快捷的创建不可变集合

    在Java 9中又新增了一些API来帮助便捷的创建不可变集合,以减少代码复杂度. 本期配套视频:Java 9 新特性:快速定义不可变集合 常规写法 以往我们创建一些不可变集合的时候,通常是这样写的: ...

  9. C++:制作火把

    制作火把 时间限制 : 1.000 sec          内存限制 : 128 MB 题目描述: 小红最近在玩一个制作火把的游戏,一开始,小红手里有一根木棍,她希望能够通过这一根木棍通过交易换取制 ...

  10. Machine Learning With Go 第4章:回归

    4 回归 之前有转载过一篇文章:容量推荐引擎:基于吞吐量和利用率的预测缩放,里面用到了基本的线性回归来预测容器的资源利用情况.后面打算学一下相关的知识,译自:Machine Learning With ...