什么是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. C#常见控件与SQL Sever数据库交互

    C#常见控件与SQL Sever数据库交互 下拉框(ComboBox)与数据库绑定 首先,我们采用DataSet作为临时的数据库,这样会比较好 那么,我们先创建两个成员(对象) string sqlc ...

  2. -2.输入加速(cin,cout)

    + ios::sync_with_stdio(false);//加速几百毫秒 cin.tie(0); // 接近scanf cout.tie(0);

  3. .Net IDE智能提示汉化(.Net6、AspNetCore)

    .Net IDE智能提示汉化(.Net6.AspNetCore) 先上现成的.net6汉化文件,可以手动下载后参照 如何为 .NET 安装本地化的 IntelliSense 文件 进行安装.或者使用后 ...

  4. [AcWing 796] 子矩阵的和

    点击查看代码 #include<iostream> using namespace std; const int N = 1e3 + 10; int a[N][N], s[N][N]; i ...

  5. LintCode-282 · 解压字符串-题解

    题目链接:https://www.lintcode.com/problem/282/description?_from=collection&fromId=208描述:小Q想要给他的朋友发送一 ...

  6. 详解Fiddler Classic过滤、重放、转发HTTP请求

    更多干货文章,更多最新文章,欢迎到作者主博客 菜鸟厚非 一.简介 今天介绍一下 Fiddler Classic 对 HTPP 的过滤.重放.转发操作,这在开发中,尤其在微服务中调试中是经常用到的功能, ...

  7. 一些特殊的CSS属性

    1.<form>标签的enctype属性 enctype属性规定在发送到服务器之前应该如何对表单数据进行编码,属性值如下: application/x-www-form-urlencode ...

  8. Json序列化与反序列化导致多线程运行速度和单线程运行速度一致问题

    紧跟上篇文章 十个进程开启十个bash后一致写入命令执行完毕之后产生了很多很多的文件,博主需要对这些文件同意处理,也就是说对几十万个文件进行处理,想了又想,单线程处理那么多数据肯定不行,于是乎想到了使 ...

  9. Ubuntu中安装redis

    第一种方式在线安装首要前提安装c语言编译环境,命令如下:$sudo apt-get install gcc 安装完成后可以输入$gcc --version查看版本 1.获取源码:$wget https ...

  10. skywalking 搭建链路监控

    一.skywalking简介 官网:https://github.com/apache/skywalking 引用官网的架构:  二.部署OAP和UI 需使用的镜像 apache/skywalking ...